Я использую библиотеку OpenCV 2.3.2, загруженную с соединительной линии OpenCV. Я хочу использовать функцию setOpenGlDrawCallback для отображения сцены OpenGL. Когда я компилирую нижеприведенный простой код, у меня возникают следующие ошибки:Как использовать opencv setOpenGlDrawCallback функция?
OpenCV Error: Assertion failed (depth >= 0 && depth <= CV_32F) in unknown function, file ..\..\..\opencv\modules\core\src\opengl_interop.cpp, line 736
Что пошло неправильно на этот код?
// углы поворота
float angx=55, angy=45;
float angstep=10;
String winname = "opengl";
// opengl callback
void on_opengl(void* param)
{
glLoadIdentity();
glTranslated(0.0, 0.0, -1.0);
glRotatef(angx, 1, 0, 0);
glRotatef(angy, 0, 1, 0);
glRotatef(0, 0, 0, 1);
static const int coords[6][4][3] = {
{ { +1, -1, -1 }, { -1, -1, -1 }, { -1, +1, -1 }, { +1, +1, -1 } },
{ { +1, +1, -1 }, { -1, +1, -1 }, { -1, +1, +1 }, { +1, +1, +1 } },
{ { +1, -1, +1 }, { +1, -1, -1 }, { +1, +1, -1 }, { +1, +1, +1 } },
{ { -1, -1, -1 }, { -1, -1, +1 }, { -1, +1, +1 }, { -1, +1, -1 } },
{ { +1, -1, +1 }, { -1, -1, +1 }, { -1, -1, -1 }, { +1, -1, -1 } },
{ { -1, -1, +1 }, { +1, -1, +1 }, { +1, +1, +1 }, { -1, +1, +1 } }
};
for (int i = 0; i < 6; ++i) {
glColor3ub(i*20, 100+i*10, i*42);
glBegin(GL_QUADS);
for (int j = 0; j < 4; ++j) {
glVertex3d(0.2 * coords[i][j][0], 0.2 * coords[i][j][1], 0.2 * coords[i][j][2]);
}
glEnd();
}
}
int _tmain(int argc, _TCHAR* argv[])
{
namedWindow(winname,CV_WINDOW_OPENGL | CV_WINDOW_FREERATIO | CV_GUI_NORMAL);
setOpenGlDrawCallback(winname.c_str(),on_opengl);**
while (true)
{
char key = (char)waitKey(10);
if(key == 27)
break;
// вращаем
switch(key)
{
case 'w':
angx+=angstep;
break;
case 's':
angx-=angstep;
break;
case 'a':
angy+=angstep;
break;
case 'd':
angy-=angstep;
break;
}
// обновить рендер
imshow(winname, NULL);
}
return 0;
}
Какая именно строка вашего кода вызывает эту ошибку? Откройте отладчик и узнайте. Кроме того, в примере ** point_cloud.cpp ** показано, как использовать 'setOpenGlDrawCallback()'. – karlphillip
Добро пожаловать в StackOverflow, надеюсь, вы прочитали [FAQ] (http://stackoverflow.com/faq#howtoask). –