我有一个读取图像的函数,并使用各种openCV函数对其进行一些图像处理。现在,我想使用openGL将该图像显示为纹理。为此,如何在cv::Mat数组和Glubyte数组之间进行转换?
这取决于你的数据类型 IplImage / cv::Mat
.如果它的类型是CV_8U,那么像素格式已经是正确的,你只需要。
cvFlip() / cv::flip()
. 背后的原因是OpenCV的坐标帧起源于左上角(y轴向下),而OpenGL应用的坐标帧起源于底部(y轴向上)。data
的指针域 IplImage / cv::Mat
以获取像素数据的访问权并将其加载到OpenGL中。如果您的图像数据是CV_8U以外的其他格式,那么您需要先使用函数 cvConvertScale() / cv::Mat::convertTo()
.