1

有一个 AVI 视频文件和一个网络摄像头。cvQueryFrame在这两种情况下都返回 null。应用代码(仅适用于凸轮):

#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" );
}
4

2 回答 2

3

通过进入 openCV 代码,我发现我需要确保 fmpeg dll 在运行时存在于当前工作目录中:

opencv_ffmpeg200d.dll

如果找不到此 dll,OpenCV 不会发出任何警告,而是 capture create 调用仅返回 NULL。

hth

于 2010-02-11T11:42:43.667 回答
0

检查视频格式。OpenCV 可以挑剔它支持的编解码器;例如,它不适用于 Xvid。您可以在OpenCV wiki上找到支持的编解码器列表

于 2010-01-10T16:55:06.933 回答