0

执行程序时遇到以下问题。程序在 main 函数的第 1 行异常崩溃。的路径都是正确的,那里没有错。lib-include 附加库的所有设置都已完美完成。这里有什么问题?

#include <cv.h>
#include <highgui.h>

int main()
{
     //load the video file to the memory
   **  CvCapture *capture =     cvCaptureFromAVI("A.avi"); ** // this instruction crashed the file is there in the folder, that not an issue....

     if( !capture ) return 1;

     //obtain the frames per seconds of that video
     int fps = ( int )cvGetCaptureProperty( capture, CV_CAP_PROP_FPS );

    //create a window with the title "Video"
    cvNamedWindow("Video");

    while(true) {
             //grab and retrieve each frames of the video sequencially 
             IplImage* frame = cvQueryFrame( capture );

             if( !frame ) break;

             //show the retrieved frame in the "Video" window
             cvShowImage( "Video", frame );

             int c; 


             if(fps!=0){  

                     //wait for 1000/fps milliseconds
                     c = cvWaitKey(1000/fps);
            }else{
                     //wait for 40 milliseconds
                      c = cvWaitKey(40);
            } 



          //exit the loop if user press "Esc" key  (ASCII value of "Esc" is 27) 
            if((char)c==27 ) break;
   }

   //destroy the opened window
   cvDestroyWindow("Video");   
   //release memory
   cvReleaseCapture( &capture );

    return 0;

}
4

1 回答 1

0

作为一个健全的检查,让我们看看VideoCapture来自 OpenCV C++ API 的东西是否有效。让我们试一试:

#include <opencv2/opencv.hpp>
#include <cv.h>
using namespace cv;

VideoCapture capture("A.avi");
Mat matFrame;
capture >> matFrame; //each time you do this, the next video frame goes into the 'matFrame' object        
IplImage* frame=cvCloneImage(&(IplImage)matFrame); //convert Mat to IplImage to hook in with your code

我在这里将 C 和 C++ OpenCV API 混合在一起,但我只是想帮助你让它运行。

于 2012-12-27T02:57:07.747 回答