在我的工作中,我將一部分捕獲幀與圖像重疊。我用openCV打開攝像頭,然後將捕獲的幀轉換爲紋理,並將其顯示在GLUT窗口中。另外,我重複這個質地的一部分與此圖像:用opengl和Antialiasing投影圖像
我在實時做到這一點,其結果是:
正如你所看到的,邊緣投影圖像不準確。我認爲這是一個別名問題,但我不知道如何使用opengl進行反鋸齒處理。我試圖在網上尋找,但我沒有找到解決我的問題的好方法。
在我的「計算」功能,我變換墊子圖像到紋理usign下面的代碼:
GLvoid calculate(){
...
...
cvtColor(image, image, CV_BGR2RGB);
glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glBindTexture(GL_TEXTURE_2D, textures[1]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
//glTexImage2D(GL_TEXTURE_2D, 0, 4,image.cols, image.rows, 0, GL_RGB,GL_UNSIGNED_BYTE, image.data);
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, image.cols, image.rows, GL_RGB, GL_UNSIGNED_BYTE, image.data);
}
,我使用此代碼顯示結果:
GLvoid Show(void) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_TEXTURE_2D);
// Matrice di proiezione
glMatrixMode (GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, WIDTH, HEIGHT, 0);
// Matrice model view
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
...
...
glBindTexture(GL_TEXTURE_2D, textures[1]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex2f((GLfloat)((coord[3].x)),(GLfloat)(coord[3].y));
glTexCoord2f(1.0f, 0.0f); glVertex2f((GLfloat)((coord[0].x)),(GLfloat)(coord[0].y));
glTexCoord2f(1.0f, 1.0f); glVertex2f((GLfloat)((coord[1].x)),(GLfloat)(coord[1].y));
glTexCoord2f(0.0f, 1.0f); glVertex2f((GLfloat)((coord[2].x)),(GLfloat)(coord[2].y));
glEnd();
}
glFlush();
glutSwapBuffers();
}
在初始化函數我寫這個:
GLvoid Init() {
glGenTextures(2, textures);
glClearColor (0.0, 0.0, 0.0, 0.0);
glEnable (GL_POLYGON_SMOOTH);
glHint (GL_POLYGON_SMOOTH_HINT, GL_DONT_CARE);
glDisable(GL_DEPTH_TEST);
}
但它不工作...
我在Win7 x64上工作,使用OPenGL 4.0和Glut 3.7。我的視頻卡是NVidia GeForce GT 630.我也啓用了Nvidia控制面板的抗鋸齒功能,但沒有任何變化。 沒有人知道如何幫助我嗎?
你能否解釋一下「投影圖像邊緣不準確」的含義?他們是否「棘手」?或者是彩色矩形不能覆蓋整個墊子? – bwroga
他們是「jaggy」。投影圖像覆蓋了我提前決定的區域,因此覆蓋率不是問題。我的問題是,如你所說,邊緣「鋸齒」! – Cristina1986
您是否嘗試過[本頁](http://bankslab.berkeley.edu/members/chris/AntiAliasing/AntiAliasingInOpenGL.html)中描述的內容? – bwroga