1

OpenGL テクスチャにアルファ チャネルを持つ opencv::mat イメージをロードしたいと考えています。

次の投稿の助けを借りて、opencv::mat から RGB 画像を OpenGL テクスチャにロードすることができました。

https://stackoverflow.com/questions/16809833/opencv-image-loading-for-opengl-texture

https://stackoverflow.com/questions/9097756/converting-data-from-glreadpixels-to-opencvmat/9098883#9098883

しかし、アルファ チャネルを使用して画像を読み込もうとすると、問題が発生します。

glTexImage2D 関数を呼び出す方法は次のとおりです。

glTexImage2D(GL_TEXTURE_2D,     // Type of texture
                        0,                 // Pyramid level (for mip-mapping) - 
                        GL_RGBA,            // Internal colour format to convert to
                        image.cols,          // Image width  
                        image.rows,          // Image height 
                        0,                 // Border width in pixels (can either be 1 or 0)
                        GL_BGRA_INTEGER, // Input image format 
                        GL_UNSIGNED_BYTE,  // Image data type
                        image.ptr());        // The actual image data itself

また、レンダリングの前に、glEnable(GL_BLEND); を使用してブレンドを有効にします。

入力画像フォーマットと内部カラー フォーマットの両方を GL_RGBA / GL_BGRA に指定すると、セグメンテーション エラーが発生しますが、どちらかまたは両方を GL_RGBA_INTEGER に設定すると、少なくともウィンドウは表示されますが、空白になります。

透明度を変更すると、ウィンドウが多かれ少なかれ透明になりますが、画像はありません。cv::imshow を使用して見ることができるように、cv::mat に画像がありますが、何とか OpenGL テクスチャに渡す際に問題があるようです。

私が見逃しているかもしれない何かを誰かが提案できますか?前もって感謝します。

PS:私はOpenGLの初心者です。詳細を説明していただければ幸いです..:P

4

1 に答える 1