2

私はグーグルで間違っているかもしれませんが、新しい Open CV でカメラのプロパティを変更する方法 (読み取り関数) を見つけることができません。カメラの自動露出自動ゲインを無効にする必要があります。
それは可能ですか?

4

3 に答える 3

9

これは古い質問ですが、これに解決策を追加したいと思います。

opencv は、基礎となる v4l メソッドを呼び出して、フレームのクエリ、カメラ プロパティの設定/取得などを行います。問題は、呼び出しが完了していないことです。また、何らかの理由で、ライブラリは v4l2 メソッドではなく v4l メソッドを呼び出します。ここで同様の問題。opencv コードを変更することで解決されるようです。

また、opencvがv4l2でサポートされているプロパティを設定できるかどうかを確認しました-「手動露出」、「露出自動優先度」など。できませんでした。これを解決するためにv4l2をいじりました:

#include <libv4l2.h>
#include <linux/videodev2.h>
#include <sys/ioctl.h>
#include <fcntl.h>

// open capture
int descriptor = v4l2_open("/dev/video0", O_RDWR);

// manual exposure control
v4l2_control c;
c.id = V4L2_CID_EXPOSURE_AUTO;
c.value = V4L2_EXPOSURE_MANUAL;
if(v4l2_ioctl(descriptor, VIDIOC_S_CTRL, &c) == 0)
    cout << "success";

// auto priority control
c.id = V4L2_CID_EXPOSURE_AUTO_PRIORITY;
c.value = 0;
if(v4l2_ioctl(descriptor, VIDIOC_S_CTRL, &c) == 0)
    cout << "success";

その後、opencv を使用できます。

カメラ コントロールの完全なリストはこちらです。

于 2014-05-02T10:10:25.460 に答える
2

だから、あなたのVideoCaptureがあります:

VideoCapture cap(0);

プロパティの設定または取得を試みることができます。

//may work or not, highly driver/impl specific.
cap.set(CV_CAP_PROP_AUTO_EXPOSURE, 0 ); 
double exposure = cap.get(CV_CAP_PROP_AUTO_EXPOSURE); 

場合によっては、次の方法でドライバー構成ダイアログにアクセスすることもできます。

cap.set(CV_CAP_PROP_SETTINGS , 1 );

これらの定数は、l 333 前後の highgui_c.h にあります。

于 2013-02-23T10:50:56.913 に答える