2017-02-22 75 views
0

我正在進行增強現實項目。因此,用戶應該使用網絡攝像頭,並使用該幀上繪製的立方體查看捕獲的視頻。當我嘗試使用glBindTexture(GL_TEXTURE_2D,texture_background)方法時,出現錯誤: ( ArgumentError:argument 2::wrong type GLUT使用()顯示回調,{}失敗:返回無論如何2::錯誤的類型 ) 我完全陷入困境,不知道該怎麼做。該項目是在Python 2.7中完成的,我使用的是opencv和PyOpenGl 3.1.0。glBindTexture - 返回參數錯誤

您可以在此鏈接中找到代碼:click here 在此先感謝。

回答

0

有趣的錯誤!所以我玩弄了你的源代碼(按照未來的方式,你應該直接將代碼添加到你的問題,而不是作爲一個單獨的鏈接),而這個問題實際上只是變量作用域之一,而不是glut或opengl的用法。問題是你的texture_background變量不存在於_draw_scene()函數的範圍內。要驗證這一點,只需嘗試在_draw_scene()函數中調用print texture_background,並且您會發現它返回None而不是所需的整數紋理標識符。

的簡單的黑客-Y的解決方案是使用它_handle_input()功能內之前,只需要調用global texture_background。您還需要在程序的主要範圍內定義texture_background = None(在您的##FOR CUBE FROM OPENGL評論下方)。相同的全球評論適用於x_axisz_axis

這就是說,這個解決方案並不是那麼棒。 GLUT所需的剛性結構以及所有這些預定義的glut*函數使得難以根據初始化應用程序的方式來構建代碼。我建議,如果你不是被迫使用GLUT,可以使用更靈活的替代方法,比如pygame,pysdl2或pyqt來創建你的上下文。