我一直在網上搜索幾天,尋找以OpenCV攝像頭捕獲並在OpenGL上下文中顯示它的最快方法。到目前爲止,這似乎工作正常,直到我需要放大。儘可能最快的OpenCV 2 OpenGL上下文
void Camera::DrawIplImage1(IplImage *image, int x, int y, GLfloat xZoom, GLfloat yZoom)
{
GLenum format;
switch(image->nChannels) {
case 1:
format = GL_LUMINANCE;
break;
case 2:
format = GL_LUMINANCE_ALPHA;
break;
case 3:
format = GL_BGR;
break;
default:
return;
}
yZoom =- yZoom;
glRasterPos2i(x, y);
glPixelZoom(xZoom, yZoom); //Slow when not (1.0f, 1.0f);
glDrawPixels(image->width, image->height, format, GL_UNSIGNED_BYTE, image->imageData);
}
我聽說可能採取FBO的方法會更快。任何想法都以最快的方式將OpenCV攝像頭捕獲到OpenGL上下文中。我會測試我看到的所有內容併發布結果。
'glDrawPixels()'絕對不是一個很好的方法來做到這一點。類似[this](http://www.songho.ca/opengl/gl_pbo.html#unpack)可能會更好。 – Flexo 2012-04-25 21:56:14
我今天試過4種不同的方式。紋理效果不佳,因爲您需要2倍的比例,而子紋理會減慢比例。使用glu到mipmap或任何有點mipmap減緩它。使用glImage API速度很慢,因爲只有mipmap有效。到目前爲止,我嘗試過的最快的例子就是上面的例子。 – aquawicket 2012-04-26 10:58:08
如何使用'glTexImage2D()'將數據上傳到NPOT紋理,然後[通過'glBegin(GL_QUADS)繪圖'](http://stackoverflow.com/a/4854802/176769)? – karlphillip 2012-05-10 18:38:08