如何在Qt QML笔记本摄像头项目中实现前置摄像头画面镜像
解决QML摄像头画面镜像的问题
我来帮你搞定这个摄像头画面镜像的问题!你试过的几种方法里有些方向不对,还有些差了关键参数,下面给你两个可行的方案:
方案一:直接在Camera组件启用镜像
Qt Multimedia的Camera组件本身就自带镜像功能,你只需要给Camera添加mirror属性并设为true就行,这种方式是在数据源层面处理镜像,非常简洁:
Camera { id: camera captureMode: Camera.CaptureVideo mirror: true // 启用画面镜像 videoRecorder { resolution: "1280x720" frameRate: 60 } }
方案二:在VideoOutput层面做镜像变换
如果你之前用transform: Scale{ xScale: -1 }没成功,大概率是因为没设置变换原点,导致镜像后的画面偏移出了可视区域。只要给Scale组件加上中心原点,就能让画面正常显示:
VideoOutput { id: viewFinder anchors.fill : parent source: camera transform: Scale { xScale: -1 // 水平镜像 origin.x: viewFinder.width / 2 // 变换原点设为组件中心 origin.y: viewFinder.height / 2 } }
为什么你之前的方法没生效?
- 调用
format.setScanLineDirection(QVideoSurfaceFormat::BottomToTop):这个是用来上下翻转画面的,不是左右镜像,方向不对; - 只设置
transform: Scale{ xScale: -1 }:没有设置变换原点,镜像后的画面会整体向左偏移,超出了VideoOutput的可视范围,看起来就像没生效; - 设置
orientation: (360 - camera.orientation) % 360:这个是调整画面的旋转角度,和镜像不是同一个效果。
内容的提问来源于stack exchange,提问作者mohsen
相关产品推荐
相关产品推荐

