【发布时间】:2010-12-31 13:28:16
【问题描述】:
有一个 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。还要检查您的相机是否已正确安装(您可以从应用程序中使用它吗?)并且当前没有其他应用程序正在使用该相机。
-
已经找到解决方案。似乎第一帧没有显示,所以
if( !frame ) break;在开始之前终止了视频的观看。但是这个问题仍然与从文件中检索视频有关。
标签: c++ video opencv webcam video-capture