2017-02-22 1 views
0

증강 현실 프로젝트를 진행하고 있습니다. 따라서 사용자는 웹캠을 사용하고 캡쳐 된 비디오를 그 프레임에 그려진 큐브와 함께보아야합니다. 그리고 gluckTexture (GL_TEXTURE_2D, texture_background) 메서드를 사용하려고하면 오류가 발생합니다. ( ArgumentError : 인수 2 : : 잘못된 형식 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를 호출하는 것입니다. 또한 프로그램의 기본 범위 (##FOR CUBE FROM OPENGL 주석 아래)에 texture_background = None을 정의해야합니다. 동일한 글로벌 코멘트가 x_axisz_axis에 적용됩니다.

그 말은 그 해결책은별로 좋지 않습니다. 이러한 미리 정의 된 glut* 함수를 모두 사용하여 GLUT에서 필요로하는 견고한 구조 덕분에 응용 프로그램 초기화와 관련하여 원하는 방식으로 코드를 구조화하는 것이 어렵습니다. GLUT를 사용하도록 강제하지 않는다면, 대신에 pygame, pysdl2 또는 pyqt와 같은 좀 더 유연한 대안을 사용하여 컨텍스트를 만들 것을 제안합니다.

관련 문제