C++ 如何使用opencv设置DMM 27UJ003-ML相机的曝光时间
我使用的是一个名为DMM 27UJ003-ML的摄像头,文件可通过。此相机具有一些功能,例如可以在C++ 如何使用opencv设置DMM 27UJ003-ML相机的曝光时间,c++,opencv,camera,C++,Opencv,Camera,我使用的是一个名为DMM 27UJ003-ML的摄像头,文件可通过。此相机具有一些功能,例如可以在OpenCV中设置的亮度,例如,请参见以下代码 //Header #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main() { VideoCapture cap(0); //Access to camera with
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
}
但是,曝光时间
无法以适当的方式设置,如果想使用get
方法来了解设置为曝光时间
值的内容,结果会很奇怪
VideoCapture cap(0);
double Exposure = cap.get(CV_CAP_PROP_EXPOSURE);
cout<<Exposure<<endl;
VideoCapture(0);
双重曝光=上限获取(CV\U cap\U PROP\U曝光);
cout如果你使用基于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
你可以看到camera有一个变量,它的名字是亮度,它的defalut值是0,这个值有一个边界(min=-10,max=10),那么我如何将这个值设置为10呢?我可以通过下面的命令来做这件事(请打开相机进行测试)
在终端中执行此操作后,您可以看到相机中的亮度变化
那么我们如何在Qt
编程中使用v4l2命令呢?通过使用QProcess
类,此命令允许您在Qt程序内部运行终端命令。我写了一个简单的例子
#include <QProcess>
int main()
{
QProcess process;
process.start("v4l2-ctl --set-ctrl brightness=10");
pro.waitForFinished(-1);
}
#包括
int main()
{
QProcess过程;
process.start(“v4l2 ctl——设置ctrl亮度=10”);
pro.waitForFinished(-1);
}
在开头添加以下代码:
cap.set(CV_CAP_PROP_AUTO_EXPOSURE,0.25);
0.25
表示“手动模式”。
#include <QProcess>
int main()
{
QProcess process;
process.start("v4l2-ctl --set-ctrl brightness=10");
pro.waitForFinished(-1);
}
cap.set(CV_CAP_PROP_AUTO_EXPOSURE,0.25);