2013-03-13 103 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 2013-03-13 15:36:06

+0

通常不允許嘗試在與主線程不同的線程中顯示屏幕上的內容。我不知道'imshow'的實現,但這可能是這裏的問題。嘗試從主線程調用'imshow'。 – cedrou 2013-03-13 16:09:05

+0

好的,謝謝。因爲你確實解決了這個問題,所以標記爲正確的,那麼我將不得不針對線程問題發佈另一個問題...... – justderb 2013-03-14 17:57:01

相關問題