前言:

因笔者前期设备限制,并没有考虑摄像头聚焦、闪光灯相关,有小伙伴问到相关问题,所以笔者就测试了下。结果有点失望,但仍然共享给小伙伴们,以减少走弯路

本教程是在 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解决扫码聚焦、闪光灯(多线程、微信扫码)相关推荐

  1. QR扫码综合示例教程(十四)Qt6.2.1(qml)取出视频帧 取景器帧

    前言: 前面几篇教程,都是介绍了使用Qt5.15.2(qml)取出视频帧,本篇解决从Qt6.2.1中取出视频帧 本教程是在Qt6.2.1(qml)摄像头显示 示例代码的基础上修改 注意,本教程示例,在 ...

  2. QR扫码综合示例教程

    前言: 计划通过本教程,让读者掌握使用Qt实现扫描二维码的功能.整个教程从最简单的取数据开始,借用多个开源库,实现扫描功能 QR扫码综合示例教程(一)Qt5.15.2(widget)摄像头显示 QR扫 ...

  3. 【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/25560901 作者:毛星云(浅墨) ...

  4. 科学计算机后盖换电池,图吧小白教程 篇二十二:手把手教你给手机换电池(拆机)...

    图吧小白教程 篇二十二:手把手教你给手机换电池(拆机) 2019-11-16 14:06:58 4点赞 18收藏 2评论 创作立场声明:手机换电池省钱可以自己动手从工钱上省,买电池最好还是不要省钱买杂 ...

  5. 【Visual C++】游戏开发五十五 浅墨DirectX教程二十二 水乳交融的美学:alpha混合技术

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/15026917 作者:毛星 ...

  6. SAP UI5 应用开发教程之六十二 - 基于 OData V4 的 SAP UI5 表格控件使用方法介绍试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  7. SAP UI5 应用开发教程之四十二 - SAP UI5 自带的 Diagnostics 诊断工具使用方法介绍

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  8. SAP UI5 应用开发教程之三十二 - 如何创建一个自定义 SAP UI5 控件试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  9. SAP UI5 初学者教程之十二 - 使用 CSS 类对 UI 进行进一步美化试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...

最新文章

  1. 用python解“超速判断”题
  2. 顺序队列相关操作(C语言实现)
  3. Verdi - GUI技能操作 Before you start (未完)
  4. 多变量线性回归程序实现
  5. Azure DevOps+Docker+Asp.NET Core 实现CI/CD(二.创建CI持续集成管道)
  6. leetcode 28. 实现 strStr()(kmp)
  7. vue打卡日历_Vue日历
  8. 深度学习——VGG16模型详解
  9. 计算机模拟水循环的过程,“SWAT主要作物水循环模拟方法详解”的学习及心得...
  10. 灰度发布:灰度很简单,发布很复杂
  11. 免费空间(免备案,无广告) 1G免费全能空间
  12. 开发软件的步骤是什么
  13. Mysql分区表概述、分区类型、分区管理
  14. 深入理解overlayfs(二):使用与原理分析
  15. dsp调音一次多少钱_dsp调音技巧
  16. BWAPP靶场-HTML injection-Reflected(POST)
  17. RK3399工控机-给你不一样的工控体验
  18. 【Java】税率计算器非if版
  19. kuangbin专题十二 基础DP
  20. 网站劫持后通过什么好办法可以修复?

热门文章

  1. MySQL体系结构及基础管理(二)
  2. 软件设计师数据结构之线性结构复习小结
  3. HR之PCH逻辑数据库的使用
  4. mysql对于商业选址的作用_调查商业网点选址的区位条件。,商业活动区位选择的原则...
  5. 移动计算最新科研成果评述
  6. TMS320C6713与TMS320C6713B区别
  7. 深度丨吴恩达团队最新论文:用CNN算法识别肺炎影像,准确率超过人类医生
  8. Vue——slot、slot-scope、scope、v-slot详解
  9. 梯度下降算法_梯度下降算法详解
  10. NAACL22 SIGIR22 | 面向 CTR 的外投广告动态创意优化实践