我无法使用以下OpenCV代码从网络摄像头捕获图像。

该代码可以显示来自本地AVI文件或视频设备的图像。它在“test.avi”文件上工作正常。

当我使用默认的网络摄像头(CvCapture * capture = cvCreateCameraCapture(0))时,程序可以检测到来自网络摄像头的图像大小,但是无法显示图像

/我忘了提及我可以看到iSight正在工作,因为LED指示灯亮起/

有人遇到同样的问题吗?

cvNamedWindow( "Example2", CV_WINDOW_AUTOSIZE );

CvCapture* capture =cvCreateFileCapture( "C:\\test.avi" ) ;// display images from avi file, works well
// CvCapture* capture =cvCreateCameraCapture(0); //display the frame(images) from default webcam not work

assert( capture );
IplImage* image;

while(1) {
 image = cvQueryFrame( capture );
   if( !image ) break;

  cvShowImage( "Example2", image );

  char c = cvWaitKey(33);
  if( c == 27 ) break;
}

cvReleaseCapture( &capture );
cvDestroyWindow( "Example2" );
  • opencv 2.2
  • 调试库* d.lib
  • WebCam isight
  • Macbook OS win7 32
  • VS2008
  • 最佳答案

    我正在使用Macbook pro 2012 Mid开发opencv 2.3,但Isight cam出现了问题。我以某种方式设法通过简单地调整Cvcapture的参数并调整框架的宽度和高度使其在opencv上起作用:

    CvCapture* capture = cvCaptureFromCAM(0);
    cvSetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH, 500 );
    cvSetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT, 600 );
    

    您也可以将这些数字更改为所需的框架宽度和高度。

    09-07 23:32