Reputation: 6013
Have an AVI videofile, and a webcam. cvQueryFrame
returns null in both cases. Code is applied(only for 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" );
}
Upvotes: 1
Views: 13554
Reputation: 1662
I found, by stepping into the openCV code, that I needed to ensure the fmpeg dll was present in the current working directory at runtime:
opencv_ffmpeg200d.dll
OpenCV doesn't shed any warning if this dll is not found, instead the capture create call just returns NULL.
hth
Si
Upvotes: 3
Reputation: 335
Check the video format. OpenCV can be picky in which codecs it supports; it doesn't work with Xvid, for example. You can find a list of supported codecs on the OpenCV wiki
Upvotes: 0