opengl - OpenCV 2.2窗口在OpenGL上引起问题

这是非常简单的代码..唯一的事情是我多次重复相同的代码进行详细调试。详细信息:OpenGL版本3.3.0,Window 7 OS和VS2008,OpenCV 2.2.0。

RenderObject();
//glPushClientAttrib(GL_CLIENT_ALL_ATTRIB_BITS);
Mat image;
image.create(screenHeight,screenWidth, CV_8UC3);
glReadPixels(0, 0, screenWidth, screenHeight, GL_BGR, GL_UNSIGNED_BYTE, (uchar*)image.data);
int error_code1 = glGetError();  // Error Code: 0, NO Error, Also output is good/as expected!
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
int error_code8 = glGetError();  // Error Code: 0, NO Error
//flip(image, image, 0);
//glPopClientAttrib();
const char *title = "glReadPixels Output";
cv::namedWindow(title);  
int error_code2 = glGetError();  // Error Code: 1282, GL_INVALID_OPERATION
imshow(title, image);
int error_code3 = glGetError();  // Error Code: 1282, GL_INVALID_OPERATION
waitKey(5000);
int error_code4 = glGetError();  // Error Code: 0, NO Error
destroyWindow(title);
int error_code5 = glGetError();  // Error Code: 1282, GL_INVALID_OPERATION
image.release();

int error_code6 = glGetError();  // Error Code: 1282, GL_INVALID_OPERATION

glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fboId);
glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT);
glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);

int error_code7 = glGetError();  // Error Code: 1282, GL_INVALID_OPERATION

引擎盖下发生的事情。那是什么? ...即使OpenCV窗口正在接管默认缓冲区,至少error_code7应该为0(即无错误)。我用framebuffer对象以及默认的glut隐藏窗口测试了代码。另外,让我告诉您,我必须使用framebuffer对象。因此,不能使用相同的默认窗口进行绘制和显示。

最佳答案

code4为0,因为在上一个glGetError()之后没有新的OpenGL操作发生。您应该解决启动时出现的问题,这是glGetError()第一次出现非零返回值的情况。因此,待办事项列表上的第一件事是在下面添加glGetError()glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
那条线应该不会真正造成任何麻烦,但还是要检查一下。如果不是,那么namedWindow调用可能会使事情变得混乱。您的OpenGL上下文是哪个版本?

https://stackoverflow.com/questions/6386591/

相关文章:

windows - 建立cvhaartraining.lib

opencv - 边缘检测iPhone OpenCV

opencv - 从大型数据集中识别被遮挡的纹理补丁

image-processing - 如何使用kinect和opencv进行面部检测?

opencv - OpenCV和学生尺寸证明

opencv - 我们如何在opencv中启动和停止网络摄像头?

dll - OpenCV版本的有意混合

android - 在Android Eclipse项目中导入OpenCV

objective-c - 将图像显示到 iPhone 模拟器屏幕

opencv - cvMulTransposed和输出矩阵的尺寸?