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