2013-01-18 73 views
0

我想在pandaboard ubuntu 12.04上使用OpenCV庫。在ubuntu上使用C++ opencv:cvCaptureFromAVI()不起作用

所以我安裝了Opencv2.4.2版本,代碼在下面。

#include <stdio.h> 
#include <stdlib.h> 
#include "opencv2/opencv.hpp" 

int main*int argc, char** argv) 
{ 
    cvNamedWindow("origin", CV_WINDOW_AUTOSIZE); 

    CvCapture *capture = cvCaptureFromAVI("hkleecv-desktop:/home/hkleecv/OpenCV-2.4.2/samples/cpp/captured.avi"); 

    IplImage *frameOrigin; 

    if(!capture0 return 1; 

    int key = 0; 
    int fps = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FPS); 

    while(key != 'q') 
    { 
     frameOrigin = cvQueryFrame(capture); 

     cvShowImage("origin", frameOrigin); 

     key = cvWaitKey(1000/fps); 
    } 

cvReleaseCapture(&capture); 

    cvDestroyWindow("origin"); 

} 

問題是這個程序無法從avi文件中抓取幀。 (此代碼工作以及在VS2010 C++)

當我用gdb shell中運行的程序,它只是返回消息「劣質1(過程NNNN)與代碼01退出」

我GOOGLE了這個錯誤並找到一個與我有類似問題的人發佈的頁面,但cvCaptureFromAVI()目前無法正常工作。

有人可以告訴我,我能在這裏做,使cvaptureFromAVI()工作?

回答

0
#include <stdio.h> 
#include <stdlib.h> 
#include <iostream> 
#include <opencv2/core/core.hpp> 
#include <opencv2/imgproc/imgproc.hpp> 
#include <opencv2/highgui/highgui.hpp> 

using namespace cv; 
using namespace std; 

int main() 
{ 
    cvNamedWindow("origin", CV_WINDOW_AUTOSIZE); 

    CvCapture *capture = cvCaptureFromAVI("C:\\j.avi"); 

    IplImage *frameOrigin; 

    if(capture==NULL) { 
     return -1; 
     cout<<"VIDEO NOT READ"<<endl; 
    } 

    int key = 0; 
    int fps = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FPS); 

    while(key != 'q') 
    { 
     frameOrigin = cvQueryFrame(capture); 

     if(frameOrigin == NULL) 
      break; 

     cvShowImage("origin", frameOrigin); 
     key = cvWaitKey(1000/fps); 
    } 

    cvReleaseCapture(&capture); 
    cvDestroyWindow("origin"); 

    return 0; 

} 

嘗試上面的代碼......它爲我工作在Windows平臺上...正確地把AVI呸地址..

+0

哦,我解決了這一問題。我只是在寫文件地址時犯了一個錯誤。在終端上寫pwd命令,我找到了正確的地址。 – user1990294

+0

現在frameOrigin上的另一個SIGSEGV段錯誤= cvQueryframe(capture); ...我想我得問另外一個問題。 – user1990294

相關問題