Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用opencv设置DMM 27UJ003-ML相机的曝光时间_C++_Opencv_Camera - Fatal编程技术网

C++ 如何使用opencv设置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

我使用的是一个名为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 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);