我使用名为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
中设置此功能
感谢您的帮助。
答案 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);
}