-1
我有一個讀取圖像的功能,並使用各種openCV函數對圖像進行一些圖像處理。現在我想用openGL顯示圖像作爲紋理,即使這種轉換是不可能的,cv :: Mat數組到Glubyte數組之間的轉換也會執行。如何將IplImage轉換爲GLubyte數組?
我有一個讀取圖像的功能,並使用各種openCV函數對圖像進行一些圖像處理。現在我想用openGL顯示圖像作爲紋理,即使這種轉換是不可能的,cv :: Mat數組到Glubyte數組之間的轉換也會執行。如何將IplImage轉換爲GLubyte數組?
它取決於IplImage/cv::Mat
中的數據類型。 如果它的類型是CV_8U,那麼像素格式已經是正確的,你只需要:
cvFlip()/cv::flip()
垂直翻轉它。理性的背後是OpenCV的座標框架在左上角(y軸向下),而OpenGL應用程序通常在底部有原點(y軸向上)data
指針字段IplImage/cv::Mat
訪問像素數據並將其加載到OpenGL中。如果您的圖像數據的格式不是CV_8U,則需要先使用函數cvConvertScale()/cv::Mat::convertTo()
將其轉換爲此像素格式。
謝謝,它的工作:) –
而我發現以下鏈接非常有用。它顯示了一個關於如何去做的代碼片段。這和sansuiso說的一樣.http://carldukeprogramming.wordpress.com/2012/08/28/converting-iplimage-to-opengl-texture/ –