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

1. 问题

使用QML的Camera组件创建相机。需要配置曝光时间,使用CameraExposure中的exposureCompensationexposureMode配置无效果,原因可能是不支持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_OBJECT
public: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相机参数只需要六行代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/169665.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【XSLVGL2.0】如何做全局键功能和键值映射

XSLVGL2.0 开发手册 【XSLVGL2.0】如何做全局键功能和键值映射 1、概述1、概述 项目常见需要配置一个按键,并要求短按此按键回到首页, 长按此按键进行关机。 XSLVGL2.0在输入设备对接接口中,有一个回调,在此回调中可以直接收到输入设备上报的所有按键事件。 一般这个功能…

UI自动化(selenium+python)之元素定位的三种等待方式!

前言 在UI自动化过程中&#xff0c;常遇到元素未找到&#xff0c;代码报错的情况。这种情况下&#xff0c;需要用等待wait。 在selenium中可以用到三种等待方式即sleep,implicitly_wait,WebDriverWait 一、固定等待(sleep) 导入time模块&#xff0c;设定固定的等待时间 缺…

计数问题+约瑟夫问题(map)

目录 一、计数问题 二、约瑟夫问题 一、计数问题 #include<iostream> #include<map> using namespace std; int main() {int n,x;cin>>n>>x;map<int,int>m;for(int i1;i<n;i){if(i>1 && i<10){m[i];}else{int temp i;while (…

解决github无法访问的办法

方法/步骤 1.问题描述&#xff1a;能联网但不能访问github.com 2.找到hosts文件。地址&#xff1a;C:\Windows\System32\drivers\etc &#xff08;一般是在这的&#xff09; 3.不要直接在这修改hosts文件&#xff0c;需要将hosts文件复制粘贴到桌面&#xff08;或其它地方自…

【仿写实现move函数】

仿写实现move函数 一、值的类型 1.左值 描述&#xff1a;能够取地址的值成为左值 int a 10; const int b 15; int *pa &a; const int *pb &b;2.纯右值 描述&#xff1a;赤裸裸的字面值 eg(false , 3 , 12.23等) int a 13; int *p &a; //取a的地址 int …

在线音频视频剪辑网站推荐

123apps: Online MP3 Cutter - Cut Songs, Make Ringtones

Datax安装部署及读取MYSQL写入HDFS

一.DataX简介 1.DataX概述 DataX 是阿里巴巴开源的一个异构数据源离线同步工具&#xff0c;致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 源码地址&#xff1a;https://github.com/alibaba/Data…

leaflet对线设置渐变色

效果展示&#xff1a; 引用leaflet-polycolor组件 npm install leaflet-polycolor .vue文件中使用 import leafletPolycolor from leaflet-polycolor; leafletPolycolor(L); const latLngs [[37.03, 111.92], [37.53444, 111.98555], [36.88, 112.12], [37.53444, 112.24], […

MT6893_天玑 1200芯片规格参数介绍_datasheet规格书

天玑 1200(MT6893)是一款专为旗舰级全新5G芯片&#xff0c;它融合了先进的AI、相机和多媒体技术&#xff0c;为用户带来令人惊叹的体验。采用先进的6纳米制程设计&#xff0c;内置各种先进技术。该芯片采用旗舰级的八核CPU架构设计&#xff0c;支持16GB强大的四通道内存以及双通…

CDN 加速 - 隐藏真实 IP - 复活 IP

CDN 一词相信很多朋友都不会陌生,网上也经常会看到相关报道。或许大部分人都知道 CDN 加速可以提升网站的打开速度及用户下载资源的速度,而同时也有不少朋友还不清楚 CDN 是什么?有什么用途?它是如何实现加速的呢?下面为大家整理了一些通俗易懂的知识点。 顺哥轻创 CDN …

每日一练:“打家劫舍“(House Robber)问题 II

有想要了解打家劫舍初级问题的&#xff0c;可以点击下面链接查看&#xff01; 每日一练&#xff1a;“打家劫舍“&#xff08;House Robber&#xff09;问题 I 1. 问题 假设有房屋形成一个环形&#xff0c;即第一个房屋和最后一个房屋也相邻&#xff0c;每个房屋里都存放着一定…

Leetcode—83.删除排序链表中的重复元素【简单】

2023每日刷题&#xff08;四十&#xff09; Leetcode—83.删除排序链表中的重复元素 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* deleteDuplicates(struct ListNode* head) {i…

c#处理SQLSERVER 中image数量类型为空

项目场景&#xff1a; DataRow dataRow dataTable.Rows[i]; var pxpicture dataRow ["pxImage"];if (pxpicture!null){byte[] pic (byte[])pxpicture;acs.Add("pxpicture", Convert.ToBase64String(pic));}问题描述 代码执行出现错误&#xff1a; 无…

MySQL 执行计划分析

MySQL执行计划最核心字段是 type 字段&#xff0c;用于描述优化器在执行查询时查找记录的方式。 其字段值较多&#xff0c;可分为 3 类加以理解&#xff1a;全表查询、范围查询、等值查询 全表查询 All&#xff1a;全表扫描&#xff0c;MySQL会扫描整个聚簇索引来找到匹配的行…

【Docker】Docker 仓库管理和Docker Dockerfile

作者简介&#xff1a; 辭七七&#xff0c;目前大二&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

MybatisPlus集成baomidou-dynamic,多数据源配置使用、MybatisPlus分页分组等操作示例

文章目录 pom配置示例代码 pom <dependencies><!--mybatisPlus集成SpringBoot起步依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version>&l…

Spring Cloud Gateway 网关跨域问题解决

0、版本说明 Spring Cloud Version&#xff1a;Spring Cloud 2021.0.4 Spring Cloud Gateway Version&#xff1a;3.1.4 Spring Boot Version&#xff1a;2.6.11 1、网关跨域问题说明 关于跨域的相关原理和理论&#xff0c;网上有大量文章对此进行说明&#xff0c;因此博主在这…

【DP】mobiusp正在创作乐曲

输入样例1&#xff1a; 5 2 1 7 7 1 3 输出样例1&#xff1a; 2 输入样例2&#xff1a; 10 3 2 5 6 4 4 5 7 3 5 6 输出样例2&#xff1a; 1 #include<iostream> #include<cstring> #include<algorithm> #include<vector> using namespace std; typede…

面向对象高级---接口

接口 概念:接口就是一种公共的规范标准,只要符合规范,大家都可以通用 java中接口存在的两个意义 用来定义规范用来做功能的扩展 接口的特点 接口用关键字interface修饰 public interface 接口名{}类实现接口用implements表示 public class 类名 implements 接口名{}接口…

学生成绩管理系统(python实现)

学生成绩表信息包括学号、姓名、各科课程成绩&#xff08;语文、数学、英语、政治&#xff09;和总分。用带头结点的单链表管理学生成绩表&#xff0c;每个学生的信息依次从键盘输入&#xff0c;并根据需要进行插入、删除、排序、输出等操作。 import json# 初始化系统 studen…