0
我想用特定分辨率捕捉圖像。 我使用了這段代碼,但從最後一個分辨率的相機捕獲的圖像和捕獲的圖像的分辨率不會更改爲大小(1280,720)。我想在捕捉圖像之前更改分辨率。qml更改相機圖像捕獲前的分辨率
imageCapture {
resolution: Qt.size(1280, 720)
onImageCaptured: {
photoPreview.source = preview
}
我想用特定分辨率捕捉圖像。 我使用了這段代碼,但從最後一個分辨率的相機捕獲的圖像和捕獲的圖像的分辨率不會更改爲大小(1280,720)。我想在捕捉圖像之前更改分辨率。qml更改相機圖像捕獲前的分辨率
imageCapture {
resolution: Qt.size(1280, 720)
onImageCaptured: {
photoPreview.source = preview
}
在很多情況下,QML Camera的行爲很奇怪,有些依賴關係還沒有很好的文檔記錄。
不管怎樣,下面的代碼對我的作品:
import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Layouts 1.3
import QtQuick.Controls 1.4
import QtMultimedia 5.6
Window {
visible: true
width: 1280
height: 960
GridLayout {
id: grid
rows: 2
columns: 2
Item {
Layout.row: 0
Layout.column: 0
Layout.minimumWidth: 80
Layout.minimumHeight: 30
Button {
id: button
text: "capture"
onClicked: {
camera.stop();
camera.viewfinder.resolution = "640x480";
camera.start();
}
}
}
Camera {
id: camera
captureMode: Camera.CaptureViewfinder
viewfinder.resolution: "160x120"
imageCapture {
id: cameracapture
onImageCaptured: {
photoPreview.source = preview // Show the preview in an Image
console.log("capture size: ", photoPreview.sourceSize);
timerHelper.restart();
}
}
onCameraStateChanged: {
console.log("camera state changed to: ", cameraState);
if (cameraState == Camera.ActiveState && viewfinder.resolution == Qt.size(640,480)) {
cameracapture.capture();
}
}
function cameraHelper() {
console.log("Stopping cam...");
camera.stop();
viewfinder.resolution = "160x120";
camera.start();
}
}
Timer {
id: timerHelper
interval: 1
onTriggered: camera.cameraHelper();
}
Item {
width: 640
height: 480
Layout.row: 1
Layout.column: 0
Layout.minimumWidth: 640
Layout.minimumHeight: 480
Image {
width: 640
height: 480
id: photoPreview
}
}
Item {
width: 640
height: 480
Layout.row: 1
Layout.column: 1
Layout.minimumWidth: 640
Layout.minimumHeight: 480
VideoOutput {
source: camera
anchors.fill: parent
focus : visible // to receive focus and capture key events when visible
}
}
}
}
如果你想成功切換分辨率,你必須stop()
和start()
的Camera
。
凍結,如果你嘗試切換分辨率回(160,120)
在onImageCaptured
,所以我用一個Timer
獲得某種QueuedConnection
。
最後的分辨率是多少?這是否意味着在捕獲圖像之前更改分辨率?請張貼適當的代碼。 – folibis