移动movie.exe时无法通过OpenCv ErrorUnhandled异常在0x7695c41f打开视频:

时间:2014-02-18 06:18:55

标签: opencv video

我写了一个非常简单的程序来测试openCV打开一个视频,但是我失败了。

这是代码。

 #include "opencv2/highgui/highgui.hpp" 
 #include "opencv2/imgproc/imgproc.hpp" 

 using namespace cv ;

 void main( void) {  
 namedWindow( "Example3", WINDOW_AUTOSIZE ); 
 VideoCapture cap; 
 cap.open( "D:\a.mp4" ); 
 cv::Mat frame; 

 while( 1 ) { 
    cap >> frame;  
  //cap.read(frame);
  if( !frame.data ) break;            
  cv::imshow( "Example3", frame ); 
  waitKey(33);
  } 
 } 

它只是闪烁窗口,但是,如果我评论if(!frame.data)休息;
  我会得到这个:   移动movie.exe时0x7695c41f处的未处理异常:Microsoft C ++异常:cv ::内存位置0x0045f968的异常..

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

cap.open( "D:\a.mp4" );应该是:

 cap.open( "D:\\a.mp4" );

答案 1 :(得分:0)

尝试将您的视频放在“当前目录”中,以便您可以将路径简称为cap.open( "a.mp4" );。 所以,你的程序应如下所示:

 #include "opencv2/highgui/highgui.hpp" 
 #include "opencv2/imgproc/imgproc.hpp" 

 using namespace cv ;

 void main( void) 
 {

 namedWindow( "Example3", WINDOW_AUTOSIZE ); 
 VideoCapture cap; 
 cap.open( "a.mp4" ); 
 cv::Mat frame; 

      while( 1 ) 
      { 
         cap >> frame;  
       //cap.read(frame);
       if( !frame.data ) break;            
       cv::imshow( "Example3", frame ); 
       waitKey(33);

       } 

 } 

PS:我认为您为视频提供路径的方式也是错误的,它应该是正向斜线/而不是向后使用,即\