OpenGL用glReadPixels得到的图像一直是全黑,求大神帮助!
作业里需要实现的一个步骤是把一个三维模型渲染到照片上,然后用了OpenGL来渲染模型,想用glReadPixel得到窗口的图像然后传给OpenCV,但是一直都只能得到全黑的图像,用glGetError查错结果是没有错误……不知道该怎么办,求助各位大神了!
渲染模型的代码:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
ReadObj(cd, "GlassesTest.obj", objmap, objname, matname);
//glutFullScreen();
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
setLight();
double r = 180 / PI;
glPushMatrix();
glRotatef(-0.05, 1.0, 0.0, 0.0);
glRotatef(r*(-2.18), 0.0, 1.0, 0.0);
glRotatef(0.03, 0.0, 0.0, 1.0);
glScalef(0.1f, 0.1f, 0.1f);
(中间画图略)
glPopMatrix();
glutSwapBuffers();
把图像传递到OpenCV的代码:
// Initialise a Mat to contain the image
cv::Mat glasses = cv::Mat::zeros(height, width, CV_8UC3); cv::Mat tempImage;
// Read Image from buffer
glReadBuffer(GL_FRONT);
glReadPixels(0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, glasses.data);
cout << gluErrorString(glGetError()) << endl;
// Process buffer so it matches correct format and orientation
cv::cvtColor(glasses, tempImage, CV_BGR2RGB);
cv::flip(tempImage, glasses, 0);
PS. 小妹刚刚学编程还有图像处理这些东西没多久,所以希望大神们能用比较容易懂的说法解释一下Orz谢谢各位大神了