You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 21:27:44