cameracv/app/qml/pages/MainPage.qml
2023-05-18 21:39:43 +03:00

136 lines
3.9 KiB
QML
Executable file

/*******************************************************************************
**
** Copyright (C) 2022 Open Mobile Platform LLC.
** Contact: https://community.omprussia.ru/open-source
**
** This file is part of the Aurora OS Application Template project.
**
** Redistribution and use in source and binary forms,
** with or without modification, are permitted provided
** that the following conditions are met:
**
** * Redistributions of source code must retain the above copyright notice,
** this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright notice,
** this list of conditions and the following disclaimer
** in the documentation and/or other materials provided with the distribution.
** * Neither the name of the copyright holder nor the names of its contributors
** may be used to endorse or promote products derived from this software
** without specific prior written permission.
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
** THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
** FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
** IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
** OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
** LOSS OF USE, DATA, OR PROFITS;
** OR BUSINESS INTERRUPTION)
** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
** WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE)
** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
** EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**
*******************************************************************************/
import QtQuick 2.6
import Sailfish.Silica 1.0
import QtMultimedia 5.6
import com.danyok.classes 1.0
Page {
objectName: "mainPage"
allowedOrientations: Orientation.Portrait
CvDetectFilter
{
id: testFilter
onObjectDetected:
{
if((w == 0) || (h == 0))
{
smile.visible = false;
}
else
{
var r = video.mapNormalizedRectToItem(Qt.rect(x, y, w, h));
smile.x = r.x;
smile.y = r.y;
smile.width = r.width;
smile.height = r.height;
smile.visible = true;
console.log(w , h);
}
}
}
Camera
{
id: camera
}
ShaderEffect
{
id: videoShader
property variant src: video
property variant source: video
}
Rectangle {
id: upRect
width: parent.width
height: parent.height * 0.1
anchors.top: parent.top
ListView {
anchors.fill: parent
model: QtMultimedia.availableCameras
delegate: Text {
text: modelData.displayName
MouseArea {
anchors.fill: parent
onClicked: {
camera.stop()
camera.deviceId = modelData.deviceId
cameraStartTimer.start()
}
}
}
}
Timer
{
id: cameraStartTimer; interval: 500;running: false; repeat: false; onTriggered: camera.start();
}
}
Rectangle {
id: rect1
width: parent.width
height: parent.height * 0.9
anchors.top: upRect.bottom
VideoOutput
{
id: video
anchors.fill: parent
source: camera
autoOrientation: false
filters: [testFilter]
Image
{
id: smile
source: "qrc:/res/smile.png"
visible: false
}
}
}
}