2012-05-16 29 views
0

我遇到了一個從IplImage轉換爲QI中的QImage的例程,我試過了,它工作的很完美,之後我試圖用Iplframes在標籤上顯示視頻,但它也工作正常現在即時通訊試圖顯示從我的攝像頭和IM運行到某種麻煩實時視頻,因爲它不顯示任何內容,opencv的2.3,Ubuntu Linux操作系統的C++在Qt標籤中顯示IplImages

CvCapture* capture = cvCreateFileCapture(argv[1]); 
//CvCapture* capture = cvCaptureFromCAM(0); 
while(1) { 

    frame = cvQueryFrame(capture); 
    cvWaitKey(33); 
    if(!frame) break;   
    cvCvtColor(frame,frame,CV_BGR2RGB); 
    myImage = QImage((unsigned char *)frame->imageDataOrigin,frame->width,frame->height,QImage::Format_RGB888); 
    myLabel.setPixmap(QPixmap::fromImage(myImage)); 
    myLabel.show(); 
    //sleep(1); 
    Sleeper::msleep(33); 
} 

在那裏,我有2個選項,capturefromcam或capturefromavi,從AVI視頻轉換和完美顯示轉換後的幀,但當我嘗試同樣的事情爲我的攝像頭的捕獲幀它不顯示任何東西,我也沒有得到任何錯誤或類似的東西,任何想法?

+0

你輸出的攝像頭的數據可以使用imshow? –

+0

您可以檢查是否使用圖像ISNULL()是有效的? – Kunal

+0

我認爲這個問題可能在從IplImage到QImage的對話中,我試圖找出問題所在。 – user977480

回答

0

從外觀上來看,cvCaptureFromCAM()未能在指數0找到一個設備。但你不知道這是因爲你沒有防守編碼:cvCaptureFromCAM()回報NULL失敗時訪問設備:

CvCapture* capture = cvCaptureFromCAM(0); 
if (!capture) 
{ 
    // print error 
    // quit application 
} 

嘗試通過CV_CAP_ANY或實驗與其他指標:1,2,3,如果沒有他們的工作,我建議你檢查compatibility list並確認是你的相機是由OpenCV的支持。

同樣應注意與cvQueryFrame()被納了:

frame = cvQueryFrame(capture); 
if (!frame) 
{ 
    // print error 
    // quit application 
}