OpenCV 2.4.8 cvCaptureFromAVI加载文件,但cv :: VideoCapture不加载

时间:2014-03-05 09:38:47

标签: c++ opencv

我在Windows 7 64上使用OpenCV 2.4.8。我可以使用C接口cvCaptureFromAVI加载和播放我的AVI文件,但使用C ++接口cv::VideoCapturecv::VideoCapture.open()总是假的。

我试图将ffmpeg(静态和共享)放在我的工作文件夹中,同样的问题。我需要重新编译OpenCV还是我做错了?

C接口代码:

IplImage *frame;
CvCapture *capture = cvCaptureFromAVI("sample.avi");
if ( capture == NULL )
{
    std::cout << "video not ok" << std::endl;
}
else
{
    std::cout << "video ok" << std::endl;
    double videoFPS = cvGetCaptureProperty( capture, CV_CAP_PROP_FPS );        
    while(frame = cvQueryFrame(capture))
    {
        cvShowImage("Video", frame);
        cvWaitKey(1000/videoFPS);
    }
    cvDestroyWindow("Video");
    cvReleaseImage(&frame);
    cvReleaseCapture(&capture);
}

使用C ++接口的代码:

cv::Mat frame;
cv::VideoCapture capture;
cv::namedWindow("Video");
if(capture.open("sample.avi"))
{
    std::cout << "video ok" << std::endl;
    double videoFPS = capture.get(CV_CAP_PROP_FPS);
    int nbFrames = capture.get(CV_CAP_PROP_FRAME_COUNT);
    for(int i=0;i<nbFrames;i++)
    {
        capture >> frame;
        imshow("Video", frame);
        cv::waitKey(1000/videoFPS);
    }
}
else
{
    std::cout << "video not ok" << std::endl;
}

感谢您的帮助。

0 个答案:

没有答案