拥有AVI视频文件和网络摄像头。 cvQueryFrame
在两种情况下都返回null。应用代码(仅适用于cam):
#include "highgui.h"
#include <iostream>
using namespace std;
int main( int argc, char** argv )
{
cvNamedWindow( "KillCam", CV_WINDOW_AUTOSIZE );
cvWaitKey(0);
CvCapture* capture = cvCreateCameraCapture(-1);
assert(capture != NULL);
IplImage* frame;
while(1){
frame = cvQueryFrame( capture );
if( !frame ) break;
cvShowImage( "KillCam", frame );
char c = cvWaitKey(33);
if( c == 30 ) break;
}
cvReleaseCapture( &capture );
cvDestroyWindow( "KillCam" );
}
答案 0 :(得分:3)
通过步入openCV代码,我发现我需要确保运行时当前工作目录中存在fmpeg dll:
opencv_ffmpeg200d.dll
如果找不到这个dll,OpenCV不会发出任何警告,而是捕获创建调用只返回NULL。
hth
的Si
答案 1 :(得分:0)
检查视频格式。 OpenCV可以挑选它支持的编解码器;例如,它不适用于Xvid。您可以在OpenCV wiki
上找到支持的编解码器列表