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 に答える