簡體   English   中英

OpenGL中的OpenCV圖像:奇怪的行為

[英]OpenCV image in OpenGL: Strange behaviour

我正在使用以下代碼從IplImage創建和顯示紋理。 它的工作時間大約是一半,但有時會扭曲圖像,我認為它與紋理填充有關,但我需要修復方面的幫助。

int loadTexture_Ipl(IplImage *image, GLuint *text) {
    if (image==NULL) return -1;
    glGenTextures(1, text);
    glBindTexture( GL_TEXTURE_2D, *text );
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, image->width, image->height,0, GL_BGR, GL_UNSIGNED_BYTE, image->imageData);
    return 0;
}

此鏈接是輸出的屏幕快照,以防有人遇到類似問題。

偏斜問題

這里的問題是,內存中IplImage一行可能比實際使用的圖像寬(這是由於性能原因)。 使用glPixelStorei(GL_UNPACK_ALIGNMENT, 1);glPixelStorei(GL_UNPACK_ALIGNMENT, 1);正確的軌道上glPixelStorei(GL_UNPACK_ALIGNMENT, 1); -只是值有誤。

舉一個簡單的例子,假設圖像的寬度為3個像素。 因此,一行(RGB)本質上由9個字節(字節對齊;行之間沒有間隔),10個字節(偶數字節對齊;行之間的1個字節間隔),12個字節(字對齊;行之間的3個字節間隔)或16個字節組成(雙字對齊;行之間有7個字節的空間)。

現在無法查找,但是我認為默認情況下,IplImage的行在單詞邊界對齊。 由於您使用RGB(每個像素3個字節;不是4個字節),因此這是一個問題。 嘗試不同的值,我認為您需要單詞對齊( glPixelStorei(GL_UNPACK_ALIGNMENT, 4); )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM