当前位置:首页 >> 半导体技术突破 >> 【QML】Qt设置USB免驱相机曝光时间(Linux系统)UVC,乐视c1

【QML】Qt设置USB免驱相机曝光时间(Linux系统)UVC,乐视c1

cpugpu芯片开发光刻机 半导体技术突破 1
文件名:【QML】Qt设置USB免驱相机曝光时间(Linux系统)UVC,乐视c1 【QML】Qt设置USB免驱相机曝光时间(Linux系统)UVC 1. 问题

使用QML的Camera组件创建相机。需要配置曝光时间,使用CameraExposure中的exposureCompensation,exposureMode配置无效果,原因可能是不支持USB相机。

有两种方法经测试有效果:

命令行调用v4l2-ctl命令的方法,使用QProcess::execute()函数使用ioctl()的方式 2. v4l2-ctl方式 2.1 .h文件 #ifndef CAMERATOOL_H#define CAMERATOOL_H#include <QObject>#include <QtCore>//ioctl方式需要的头文件#include <linux/videodev2.h>#include <sys/ioctl.h>#include <fcntl.h>#include <unistd.h>class CameraTool : public QObject{Q_OBJECTpublic:explicit CameraTool(QObject *parent = nullptr);public:Q_INVOKABLE void setExposure(const int exposure);Q_INVOKABLE void setAutoExposure(const bool en);};#endif // CAMERATOOL_H 2.2 .cpp文件 #include "cameratool.h"CameraTool::CameraTool(QObject *parent){}//方法1,命令行方式, execute()void CameraTool::setExposure(const int exposure){//注意:exposure_absolute 根据自己的系统来,查看方式:v4l2-ctl -d /dev/video9 --list-ctrlsstd::string cmd = "v4l2-ctl -d /dev/video9 -c exposure_absolute=" + std::to_string(exposure);const char* cmdc = cmd.c_str();QProcess::execute(cmdc);return;}void CameraTool::setAutoExposure(const bool en){QStringList arg;//注意:exposure_auto 根据自己的系统来,查看方式:v4l2-ctl -d /dev/video9 --list-ctrlsarg.clear();if(en == true){arg << "-d" << "/dev/video9" << "-c" << "exposure_auto=3";}else{arg << "-d" << "/dev/video9" << "-c" << "exposure_auto=1";}QProcess::execute("v4l2-ctl", arg);return;} 3. ioctl()方式 3.1 .h文件

与上一节的头文件一样。

3.2 .cpp文件 #include "cameratool.h"CameraTool::CameraTool(QObject *parent){}//方法2,ioctl方式, ioctl()void CameraTool::setExposure(const int exposure){v4l2_control control;int fd = open("/dev/video9", O_RDWR);if(fd < 0){printf("open camera failed\n");return;}control.id = V4L2_CID_EXPOSURE_ABSOLUTE;control.value = exposure;ioctl(fd, VIDIOC_S_CTRL, &control);close(fd);return ;}void CameraTool::setAutoExposure(const bool en){v4l2_control control;int fd = open("/dev/video9", O_RDWR);if(fd < 0){printf("open camera failed\n");return;}control.id = V4L2_CID_EXPOSURE_AUTO;if(en == true){control.value = V4L2_EXPOSURE_APERTURE_PRIORITY;}else{control.value = V4L2_EXPOSURE_MANUAL;}ioctl(fd, VIDIOC_S_CTRL, &control);close(fd);return ;} 参考:

调节UVC相机参数只需要六行代码

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接