2013-03-13 3 views
0

Netbeans C++를 사용하여 작은 프로젝트를 만듭니다. 이 간단한 코드가 있습니다 :호출시 cv :: namedWindow()가 응답하지 않습니다.

int main(int argc, char** argv) { 
    cv::namedWindow("Output"); 

    // Create Receiver and Decoder on another thread 
    boost::thread t1 = boost::thread(startReceiver); // Details irrelevant 
    boost::thread t2 = boost::thread(startDecoder); // Details irrelevant 

    std::cout << "Waiting..." << std::endl; 

    t2.join(); 
    t1.join(); 

    std::cout << "Finished." << std::endl; 

    return 0; 
} 

프로그램이 cv::namedWindow("Output");에 있습니다. 나는 GDB를 사용하여 프로그램을 일시 중지하고이 호출 스택입니다 :

poll() 
??() 
xcb_connect_to_fd() 
xcb_connect_to_display_with_auth_info() 
_XConnectXCB() 
XOpenDisplay() 
gdk_display_open() 
gdk_display_open_default_libgtk_only() 
gtk_init_check() 
gtk_init() 
cvInitSystem() 
cvNamedWindow() 
main (argc=1, argv=0x7fffffffe4c8) 

그것은 뭔가 폴링, 내가 뭘 ... 어떤 아이디어를 모른다는 무엇입니까?

답변

2

GTK와 관련된 문제인 것 같습니다. 표준 창을 사용해보십시오 :

cv::namedWindow("Output", CV_WINDOW_NORMAL|CV_GUI_NORMAL); 
+0

그 호출에 매달려를 해결하지만 지금은 호출 할 때'CV : imshow ("출력", IMG) '는 응답 부스트 스레드 중 하나에서 .. .. – justderb

+0

일반적으로 메인 스레드와 다른 스레드에서 화면에 표시하려고 시도 할 수 없습니다. 나는'imshow'의 구현을 모른다. 그러나 아마도 여기에서는 문제 일 것이다. 메인 스레드에서'imshow'를 호출하십시오. – cedrou

+0

감사합니다. 당신이이 문제를 해결 한 이후로 당신을 올바른 것으로 표시하면, 나는 스레딩을위한 또 다른 질문을 게시해야합니다 ... – justderb

관련 문제