int main()
{
cvNamedWindow( "Example2", CV_WINDOW_AUTOSIZE );
CvCapture* capture = cvCaptureFromAVI( "a.avi" );
IplImage* frame;
if(!capture)
{
printf("fail");
}
else
{
while(1)
{
frame = cvQueryFrame( capture );
cvShowImage( "Example2", frame );
char c = cvWaitKey(40);
if( c == 27 ) break;
}
cvReleaseCapture( &capture );
cvDestroyWindow( "Example2" );
}
return 0;
}
我用open cv尝试的视频的帧速率是29帧/秒,帧宽是720,高度是480,视频的格式是带有avi包装的DX50
空白窗口显示名为example2,它消失了......
问题是cvcapturefromavi确实返回指针,这就是为什么不打印失败
操作系统窗口7
答案 0 :(得分:0)
我试过我的电脑(用网络摄像头而不是使用cvCaptureFromCAM(-1)的文件)并且你的代码工作得很好,这就是你应该尝试的。
PPS:请更好地缩进代码以提高可读性
于连
答案 1 :(得分:0)
我有同样的问题。据说问题出现是因为缺少必要的视频编解码器。建议使用“Mencoder”来编码avi文件以供OpenCV使用,但它没有解决我的问题,我仍然无法使用OpenCV 2.3.1播放avi文件。
我通过添加我的路径opencv_ffmpeg.dll解决了我的问题。希望它适用于面对这个问题的你和人民。
答案 2 :(得分:0)
如果你构建opencv到静态库,你会发现bin目录中仍然有一个dll文件“opencv_ffmpegxxxxx.dll”。即使您静态地将代码与opencv链接,也需要此dll。因此,请确保系统可以找到此dll文件。