我有一个函数可以读取图像并使用各种openCV函数对其进行一些图像处理。现在我想使用openGL将图像显示为纹理,即使无法进行此转换,cv :: Mat数组与Glubyte数组之间的转换也可以。
答案 0 :(得分:0)
这取决于IplImage / cv::Mat
中的数据类型。
如果它是CV_8U类型,则像素格式已经正确,您只需要:
cvFlip() / cv::flip()
垂直翻转它。理性的背后是OpenCV在左上角有一个坐标框架的原点(y轴向下),而OpenGL应用程序通常在底部有一个原点(y轴向上)data
的{{1}}指针字段来访问像素数据并将其加载到OpenGL中。 如果您的图像数据采用的格式不是CV_8U,则需要先使用函数IplImage / cv::Mat
将其转换为此像素格式。