QR扫码综合示例教程(二十二)Qt5.15.2+Qt6.2.1(qml)+opencv4.5.4解决扫码聚焦、闪光灯(多线程、微信扫码)
前言:
因笔者前期设备限制,并没有考虑摄像头聚焦、闪光灯相关,有小伙伴问到相关问题,所以笔者就测试了下。结果有点失望,但仍然共享给小伙伴们,以减少走弯路
本教程是在 Qt5.15.2+Qt6.2.1(qml)+opencv4.5.4实现扫码功能(多线程、微信扫码) 示例的基础上修改
QR扫码综合示例教程(二十一)Qt5.15.2+Qt6.2.1(qml)+opencv4.5.4实现扫码功能(多线程、微信扫码)_aggs1990的专栏-CSDN博客
一、Qt5.15.2摄像头聚焦问题
1.分离取景器
因当前代码较多,笔者将VideoOutput给移到一个单独qml文件中,并作修改
(1)增加了十字标,用于显示点击的位置
(2)在qml中,增加如下代码,以绘制当前的摄像头焦点区域
Repeater {model: camera.focus.focusZonesRectangle {border {width: 2color: status == Camera.FocusAreaFocused ? "green" : "white"}color: "transparent"// Map from the relative, normalized frame coordinatesproperty variant mappedRect: videoOutput.mapNormalizedRectToItem(area);x: mappedRect.xy: mappedRect.ywidth: mappedRect.widthheight: mappedRect.height}}
PS。windows系统下不支持哈,所以运行在windows下时,只会多一些不支持的警告
响应下鼠标区域的事件,添加如下代码
Connections {target: mouseAreafunction onDoubleClicked(mouse) {//取消显示十字标viewFinder.state = ""
// camera.unlock()}function onClicked(mouse) {console.log("clicked", mouse.x, mouse.y)if( Math.abs(mouseX - mouse.x) < mouseArea.drag.threshold&& Math.abs(mouseY - mouse.y) < mouseArea.drag.threshold&& viewFinder.state === "State_clicked"){//取消显示十字标viewFinder.state = ""//取消摄像头的锁定camera.unlock()}else{//显示十字标mouseX = mouse.xmouseY = mouse.yviewFinder.state = "State_focus"//计算相对位置let sourcePoint = videoOutput.mapPointToSource(Qt.point(mouse.x, mouse.y ))let pointX = sourcePoint.x / camera.viewfinder.resolution.widthlet pointY = sourcePoint.y / camera.viewfinder.resolution.heightcustomFocusPoint = Qt.point(pointX, pointY )//聚焦并锁定摄像头camera.searchAndLock()}}}
笔者设置双击或点在同一位置时,取消十字标的显示,否则就显示在点击的位置上
显示十字标的同时,计算出点击的相对位置坐标(聚焦的输入量是一个相关位置),然后手工调用摄像头的聚焦功能(笔者找这个函数,花了不少时间-_-,小伙伴不要忘记调用,否则不生效的)
取消显示十字标时,要取消摄像头的锁定,否则自动聚焦就失效了
2.修改摄像头参数
以下是自动聚集时的参数
Camera {id: camerafocus.focusMode: Camera.FocusMacro + Camera.FocusContinuousfocus.focusPointMode: Camera.FocusPointAutocaptureMode: Camera.CaptureStillImageimageCapture {}
}
聚焦模式设置为自动聚焦最近的物体
聚焦点的模式设置为自动聚焦点
设置完成后就可以实现自动聚焦功能
下面设置手动聚焦
Camera {id: camerafocus.customFocusPoint: viewFinder.customFocusPointfocus.focusPointMode: Camera.FocusPointCustomfocus.focusMode: Camera.FocusMacroimageCapture {}}
聚焦模式设置为自定义聚焦模式
聚焦点的模式设置为自定义聚焦点
设置完成后,要传入自定义的聚焦位置点(注意是相对坐标),再调用 camera.searchAndLock()
才能实现自动聚焦功能
二、Qt5.15.2摄像头闪光灯问题
这个相对简单,修改主界面,增加设置项
直接绑定camera的属性即可
camera.flash.mode: checkBox_flash.checked ? Camera.FlashOn: checkBox_flash.tristate ? Camera.FlashAuto : Camera.FlashOff
三、Qt6.2.1摄像头聚焦问题
1.分离取景器
因当前代码较多,笔者将VideoOutput给移到一个单独qml文件中,并作修改
(1)增加了十字标,用于显示点击的位置
(2)在qml中,定义聚焦点属性,用以绘制当前的摄像头焦点
property point focusPoint
响应下鼠标区域的事件,添加如下代码
Connections {target: mouseAreafunction onDoubleClicked(mouse) {//取消显示十字标viewFinder.state = ""}function onClicked(mouse) {console.log("clicked", mouse.x, mouse.y)if( Math.abs(mouseX - mouse.x) < mouseArea.drag.threshold&& Math.abs(mouseY - mouse.y) < mouseArea.drag.threshold&& viewFinder.state === "State_clicked"){//取消显示十字标viewFinder.state = ""}else{//显示十字标mouseX = mouse.xmouseY = mouse.yviewFinder.state = "State_focus"//计算相对位置let pointX = ( mouse.x - videoOutput.contentRect.x ) / videoOutput.contentRect.widthlet pointY = ( mouse.y - videoOutput.contentRect.y ) / videoOutput.contentRect.heightcustomFocusPoint = Qt.point(pointX, pointY )console.debug("customFocusPoint", customFocusPoint )}}}
笔者设置双击或点在同一位置时,取消十字标的显示,否则就显示在点击的位置上
显示十字标的同时,计算出点击的相对位置坐标(聚焦的输入量是一个相关位置)
2.修改摄像头参数
以下是自动聚集时的参数
Camera {id: camerafocusMode: Camera.FocusModeAutoNear
}
聚焦模式设置为自动聚焦最近的物体
下面设置手动聚焦
Camera {id: cameracustomFocusPoint: viewFinder.customFocusPointfocusMode: Camera.FocusModeManual}
聚焦模式设置为自定义聚焦点模式
设置完成后,要传入自定义的聚焦位置点(注意是相对坐标),才能实现自动聚焦功能
笔者测试未成功,打印出camera.isFocusModeSupported(Camera.FocusModeManual)是false,笔者受限于设置,未再测试
四、Qt6.2.1摄像头闪光灯问题
这个相对简单,修改主界面,增加设置项
直接绑定camera的属性即可
camera.flashMode: checkBox_flash.checked ? Camera.FlashOn : checkBox_flash.tristate ? Camera.FlashAuto : Camera.FlashOn
这个笔者也未测试成功
修改完成以上代码,就可以运行程序了,以下是笔者的运行结果
1.Qt6.2.1在android下的运行结果
很遗憾,未成功,一定是自动聚焦模式
2.Qt5.15.2在android下的运行结果
运行成功,点哪就聚焦哪;若取消则自动聚焦;闪光灯也正常使用
闪光灯不方便演示,就不截图了
本次教程源码下载
后记:
本次教程在windows上无法观看效果
使用Qt6.2.1均自动聚焦成功,其他的未成功,笔者建议等待官方的修复
QR扫码综合示例教程(二十二)Qt5.15.2+Qt6.2.1(qml)+opencv4.5.4解决扫码聚焦、闪光灯(多线程、微信扫码)相关推荐
- QR扫码综合示例教程(十四)Qt6.2.1(qml)取出视频帧 取景器帧
前言: 前面几篇教程,都是介绍了使用Qt5.15.2(qml)取出视频帧,本篇解决从Qt6.2.1中取出视频帧 本教程是在Qt6.2.1(qml)摄像头显示 示例代码的基础上修改 注意,本教程示例,在 ...
- QR扫码综合示例教程
前言: 计划通过本教程,让读者掌握使用Qt实现扫描二维码的功能.整个教程从最简单的取数据开始,借用多个开源库,实现扫描功能 QR扫码综合示例教程(一)Qt5.15.2(widget)摄像头显示 QR扫 ...
- 【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/25560901 作者:毛星云(浅墨) ...
- 科学计算机后盖换电池,图吧小白教程 篇二十二:手把手教你给手机换电池(拆机)...
图吧小白教程 篇二十二:手把手教你给手机换电池(拆机) 2019-11-16 14:06:58 4点赞 18收藏 2评论 创作立场声明:手机换电池省钱可以自己动手从工钱上省,买电池最好还是不要省钱买杂 ...
- 【Visual C++】游戏开发五十五 浅墨DirectX教程二十二 水乳交融的美学:alpha混合技术
本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/15026917 作者:毛星 ...
- SAP UI5 应用开发教程之六十二 - 基于 OData V4 的 SAP UI5 表格控件使用方法介绍试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...
- SAP UI5 应用开发教程之四十二 - SAP UI5 自带的 Diagnostics 诊断工具使用方法介绍
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...
- SAP UI5 应用开发教程之三十二 - 如何创建一个自定义 SAP UI5 控件试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...
- SAP UI5 初学者教程之十二 - 使用 CSS 类对 UI 进行进一步美化试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...
最新文章
- 用python解“超速判断”题
- 顺序队列相关操作(C语言实现)
- Verdi - GUI技能操作 Before you start (未完)
- 多变量线性回归程序实现
- Azure DevOps+Docker+Asp.NET Core 实现CI/CD(二.创建CI持续集成管道)
- leetcode 28. 实现 strStr()(kmp)
- vue打卡日历_Vue日历
- 深度学习——VGG16模型详解
- 计算机模拟水循环的过程,“SWAT主要作物水循环模拟方法详解”的学习及心得...
- 灰度发布:灰度很简单,发布很复杂
- 免费空间(免备案,无广告) 1G免费全能空间
- 开发软件的步骤是什么
- Mysql分区表概述、分区类型、分区管理
- 深入理解overlayfs(二):使用与原理分析
- dsp调音一次多少钱_dsp调音技巧
- BWAPP靶场-HTML injection-Reflected(POST)
- RK3399工控机-给你不一样的工控体验
- 【Java】税率计算器非if版
- kuangbin专题十二 基础DP
- 网站劫持后通过什么好办法可以修复?
热门文章
- MySQL体系结构及基础管理(二)
- 软件设计师数据结构之线性结构复习小结
- HR之PCH逻辑数据库的使用
- mysql对于商业选址的作用_调查商业网点选址的区位条件。,商业活动区位选择的原则...
- 移动计算最新科研成果评述
- TMS320C6713与TMS320C6713B区别
- 深度丨吴恩达团队最新论文:用CNN算法识别肺炎影像,准确率超过人类医生
- Vue——slot、slot-scope、scope、v-slot详解
- 梯度下降算法_梯度下降算法详解
- NAACL22 SIGIR22 | 面向 CTR 的外投广告动态创意优化实践