0

只有在演示应用程序打开了采集器后,才能通过 OpenCV 读取模拟帧采集器的图像,否则会产生黑色图像。以下调试代码

qDebug() << "Brightness" << cap->get(CV_CAP_PROP_BRIGHTNESS);
qDebug() << "Contrast  " << cap->get(CV_CAP_PROP_CONTRAST);
qDebug() << "Saturation" << cap->get(CV_CAP_PROP_SATURATION);
qDebug() << "Hue       " << cap->get(CV_CAP_PROP_HUE);
qDebug() << "Gain      " << cap->get(CV_CAP_PROP_GAIN);
qDebug() << "Exposure  " << cap->get(CV_CAP_PROP_EXPOSURE);
qDebug() << "Width     " << cap->get(CV_CAP_PROP_FRAME_WIDTH);
qDebug() << "Height    " << cap->get(CV_CAP_PROP_FRAME_HEIGHT);

输出

Brightness 5000
Contrast   5000
Saturation 4000
Hue        5000
Gain       -8.58993e+08
Exposure   -1
Width      720
Height     576

当然这些设置看起来有缺陷,但是在抓取器的演示应用程序访问后成功打开设备时,它们是相同的。

我想这是一个驱动程序问题,其中需要 OpenCV 无法访问的某些设备设置,包括无效的标准设置(增益、曝光)。可以使用哪些较低级别的方法来查找/编写这些设置?

4

1 回答 1

-1

似乎相机实际上还没有加载,OpenCV 已经尝试拍摄图像。对我来说,查询更多帧通常会有所帮助,如下所示:

CvCapture* capture = cvCaptureFromCAM( CV_CAP_ANY );
if ( capture ) {
    IplImage* frame = cvQueryFrame( capture );
    for (int i = 0; i < `0; i++)
    {
        frame = cvQueryFrame(capture);
    }
    cvSaveImage("mypic.jpg",frame);
    cvReleaseCapture( &capture );
}
于 2014-01-31T19:01:01.227 回答