2014-04-08 127 views
1

我安裝了一個新的Ubuntu。通過Shop下載Eclipse,通過Eclipse中的插件管理器(Kepler)安裝CDT插件。我使用商店下載OpenCV開發包。在eclipse中添加路徑後,我寫了一個簡短的程序。Ubuntu中的OpenCV不顯示窗口

#include <iostream> 
#include "opencv2/opencv.hpp" 

int main(int argc, const char * argv[]) 
{ 
    cvNamedWindow("result", CV_WINDOW_AUTOSIZE); 

    CvCapture* capture = cvCaptureFromCAM(-1); 

    IplImage *newImg; 

    while(true) 
    { 
     newImg = cvQueryFrame(capture); 
     if(newImg==0) 
      break; 
     cvShowImage("result", newImg); 
    } 
    return 0; 
} 

該程序編譯和調試器顯示newImg中的一些值。但是沒有窗口能夠顯示結果。相機的LED燈亮起,通過循環的一步似乎完美。只有輸出窗口丟失。相同的程序在OS X上的XCode上運行完美。

+1

你沒有使用C++ opencvAPI,讓你的生活更輕鬆,並使用C++函數 – Engine

回答

3

只需在執行後續循環之間添加小的等待時間即可。爲此目的使用cv::waitKey

#include <iostream> 
#include "opencv2/opencv.hpp" 

int main(int argc, const char * argv[]) 
{ 
    cvNamedWindow("result", CV_WINDOW_AUTOSIZE); 

    CvCapture* capture = cvCaptureFromCAM(-1); 

    IplImage *newImg; 

    while(true) 
    { 
     newImg = cvQueryFrame(capture); 
     if(newImg==0) 
      break; 
     cvShowImage("result", newImg); 
     cv::waitKey(100); //Wait of 100 ms 
    } 
    return 0; 
} 
+0

THX。 cv :: waitKey似乎也是一種MessagePump。我在代碼的任何位置找到了一個類似cvStartWindowThread的解決方案。但我認爲你的解決方案更好。 –