/******************************************************************************* ** ** 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 } } } }