如何使用opencv设置DMM 27UJ003-ML摄像机的曝光时间

时间:2017-09-13 17:44:04

标签: c++ opencv camera

我使用名为DMM 27UJ003-ML的相机,文件可通过this link获取。此相机具有Brightness等一些功能,可在OpenCV中设置,例如,请参阅以下代码

//Header 
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
   VideoCapture cap(0);   //Access to camera with ID = 0
   double brightness = cap.get(CV_CAP_PROP_BRIGHTNESS); // get value of brightness
   cout<<brightness<<endl;   //print brightness value in console
}

结果为0.5并且没关系,我也可以设置Brightness,但如果我想更改Exposure time,问题就会出现!! {{{ 1}}是另一个可以变量的相机属性

Exposure time

int main() { VideoCapture cap(0); cap.set(CV_CAP_PROP_EXPOSURE,0.1); } 无法以适当的方式设置,如果想使用Exposure time方法知道设置为get的值,结果是奇怪的

Exposure time

VideoCapture cap(0); double Exposure = cap.get(CV_CAP_PROP_EXPOSURE); cout<<Exposure<<endl; 的结果是Exposure而且相机没有响应外部环境(实际上inf似乎是Exposure time)所以唯一的重置方式inf是公司提供给我的软件,我不知道如何在Exposure time中设置此功能

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

在开头添加以下代码:

cap.set(CV_CAP_PROP_AUTO_EXPOSURE,0.25);

0.25表示“手动模式”。

答案 1 :(得分:0)

如果你使用基于Linux的机器,你可以安装一个可以帮助你的软件包,它的名字是v4l2ucp,这个软件包可以通过ubuntu中的命令安装

sudo apt install v4l2ucp

这是一个使用精美的v4l2软件包为您提供相机图形控制的软件包(通过安装v4l2ucp,无需再次安装v4l2。如果您可以在v4l2ucp中更改曝光时间,那么您可以在程序中使用v4l2

您可以通过ubuntu终端中的以下命令获取有关您相机的全部信息。

v4l2-ctl --all

通过使用上述命令知道哪些参数可用后,您可以更改该参数的值。例如我的输出就像下面的

 brightness (int)    : min=-10 max=10 step=1 default=0 value=0

你可以看到有一个相机的变量,它的名称是亮度和defalut值为0并且有值的边界(min = -10,max = 10)所以如何设置这个值为例如10?我可以通过以下命令执行此操作(请通过打开相机测试)

v4l2-ctl --set-ctrl brightness=10

在终端中执行此操作后,您可以在相机中看到亮度变化。

那么我们如何在Qt编程中使用v4l2命令呢?通过使用QProcess类,此命令允许您在Qt程序中运行终端命令。我写了一个简单的例子

 #include <QProcess>
 int main()
 {
     QProcess process;
     process.start("v4l2-ctl --set-ctrl brightness=10");
     pro.waitForFinished(-1);
 }