我試圖使用OpenGL的glGetTexImage()的輸出製作OpenCV Mat()。我試圖從中獲取信息的紋理是使用該調用進行的;使用glGetTexImage()獲得OpenCV Mat
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8UI, iWidth, iHeight, 0, GL_RGBA_INTEGER, GL_UNSIGNED_BYTE, pImageData);
所以我試圖做到這一點;
unsigned char* texture_bytes = (unsigned char*)malloc(sizeof(unsigned char)*texture_width*texture_height * 3);
glGetTexImage(GL_TEXTURE_2D, 0, GL_BGR, GL_UNSIGNED_BYTE, texture_bytes);
Matrix = Mat(texture_height, texture_width, CV_8UC3, texture_bytes);
什麼我不知道是如果有人知道我應該設置的格式和glGetTexImage()來的類型,爲了這個工作。另外,我應該如何設置Mat()的類型?
您可以假定上下文設置正確,並且輸入的紋理是正確的。我通過使用OpenGL在屏幕上顯示紋理來驗證這一點。提前致謝!
你目前的嘗試究竟是什麼問題?你沒有收到任何數據嗎?或者看起來不正確的數據?儘管參數看起來對我有效,但爲了以防萬一,請嘗試調用'glGetError()'。 –
當我嘗試從給定的紋理中獲取texture_bytes數據時,出現了我的問題。 texture_bytes返回空白(如在「ffffffffffffffffff」中)。所以是的,我沒有收到任何數據。我確信數據在那裏,因爲紋理在OpenGL中渲染並顯示得很好,但它只會在OpenCV中給我一個灰色的屏幕。我希望這個問題稍微澄清一下:) –
更正,我似乎從texture_data中獲得的唯一數據是「威脅全方位威脅」。 –