opencv - cvCaptureFromCAM(CV_CAP_DSHOW)捕获空白帧

时间:2012-05-03 13:23:53

标签: c++ opencv screen

我在Windows中使用OpenCV 2.1和Visual Studio 2008。我试图从CCD相机抓取帧,并希望在Windows上显示。相机采用PAL格式。相机正在检测但显示空白的灰色屏幕。

我发现许多帖子与空白屏幕相关,但在我的情况下没有人工作。所以我发布这个问题。

以下是我的代码:

#include "stdafx.h"
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include <iostream>

int main(int argc, char* argv[])
{   
    cvNamedWindow( "mywindow", CV_WINDOW_AUTOSIZE );

    CvCapture* capture = cvCaptureFromCAM(CV_CAP_DSHOW);

    if ( !capture ) {
        fprintf( stderr, "ERROR: capture is NULL \n" );
        getchar();
        return -1;
    }

    while ( 1 ) {
        IplImage* frame = cvQueryFrame( capture );

        if ( !frame ) {
            fprintf( stderr, "ERROR: frame is null...\n" );
            getchar();
            break;
        }
        else
        {
            fprintf( stderr, "Size of camera frame %d X %d\n",frame->width,frame->height );
        }

        cvShowImage( "mywindow", frame );

        if ( (cvWaitKey(10) & 255) == 27 ) break;
    }

    // Release the capture device housekeeping
    cvReleaseCapture( &capture );
    cvDestroyWindow("mywindow");

    return 0;
}

以上代码返回帧尺寸320 X 240但空白屏幕。

代码适用于代码为CvCapture* capture = cvCaptureFromCAM(1);

的USB网络摄像头

我在我的主板上使用Avermedia Gold相机卡。所以我需要SDK才能使用这款相机,还是有选择使用CCD相机?

正确安装驱动程序并使用EzCaptureVC应用程序进行检查。

1 个答案:

答案 0 :(得分:2)

OpenCV需要支持您的相机,否则无法保证其正常工作:查看compatibility list

另外2.1它已经过时了。我建议你再试一次2.3.1,因为这方面有一些改进。