import QtQuick 2.15
import QtQuick.Window 2.15
import QtMultimedia 6.3
import QtQuick.Controls 2.15
Window {
visible: true
width: 640
height: 480
title: "Camera Preview"
MediaDevices {
id: mediaDevices
}
//CaptureSession is a session,here is connect camera and vidiooutput
CaptureSession {
camera: Camera {
id: camera
cameraDevice: mediaDevices.defaultVideoInput
focusMode: Camera.FocusModeAutoNear
customFocusPoint: Qt.point(0.2, 0.2) // Focus relative to top-left corner
Component.onCompleted: {
camera.start()
}
}
videoOutput: videoOutput
}
VideoOutput {
id: videoOutput
anchors.fill: parent
}
}
MediaDevices提供了设备列表,让下面的camera可以找到相机设备
CaptureSession相当于一个会话控制,连接相机(camera)和输出平台(videoOutput )
最后要记得打开摄像头!!!一开始复制官方的demo老是显示不了画面就是没有打开摄像头TAT,问ai它还说是不用手动控制开启画面,captureseesion会自动控制,人工zz害我找了两小时问题,最后还是乱翻文档,翻到camera有个active:bool的property,测试了一下一直是false,然后去翻camera的方法,发现有个start(),通过camera.start()才解决不能显示画面这个问题。
我想像的CaptureSession应该就是让一个窗口显示画面(需要画面源和显示窗口),所以如果我想让摄像头的画面显示在多个窗口,只需要设置多个VideoOutput和CaptureSeesion,这样一个画面源多个显示窗口的效果就有了,但是试了一下,发现不行,只会显示一个窗口,不知道为什么。后面再研究。