nextcloud-custom-apps-face-.../git_facerecognition/lib/Model/IModel.php
2024-09-03 09:12:12 +05:00

103 lines
2.7 KiB
PHP

<?php
/**
* @copyright Copyright (c) 2020, Matias De lellis <mati86dl@gmail.com>
*
* @author Matias De lellis <mati86dl@gmail.com>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\FaceRecognition\Model;
/**
* Interface IModel
*/
interface IModel {
/**
* @return int model id
*/
public function getId(): int;
/**
* @return string model name
*/
public function getName(): string;
/**
* @return string model description
*/
public function getDescription(): string;
/**
* @return string model documentation link
*/
public function getDocumentation(): string;
/**
* @return bool if model is installed
*/
public function isInstalled(): bool;
/**
* @return bool if meet dependencies to run the model
*/
public function meetDependencies(string &$error_message): bool;
/**
* Obtain the maximum image area recommended by the model.
*/
public function getMaximumArea(): int;
/**
* Get the Mime Type preferred by the model
*
* @return string mimetype
*/
public function getPreferredMimeType(): string;
/**
* Install the model.
*/
public function install();
/**
* Open the model
*/
public function open();
/**
* Detect faces on image.
*
* @param string $imagePath Image path to analyze
* @param bool $compute (optional) variable that indicates if must obtain the landmarks and the descriptor.
* @return array where values are assoc arrays with "top", "bottom", "left", "right" of each face rect,
* "detection_confidence", and optionally the "landmarks", and "descriptor" according to the compute parameter.
*/
public function detectFaces(string $imagePath, bool $compute = true): array;
/**
* Detect landmarks and compute descriptor of an face over an image.
*
* @param string $imagePath Image path to analyze
* @param array $face with "top", "bottom", "left", "right" of an face in that imagePath
* @return array as and copy of that face adding the values of the "landmarks" and the "descriptor"
*/
public function compute(string $imagePath, array $face): array;
}