我写了一个非常简单的程序来测试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的异常..
有什么想法吗?
答案 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:我认为您为视频提供路径的方式也是错误的,它应该是正向斜线/
而不是向后使用,即\