madbob/face-recognition

face_recognition 包的包装器

资助包维护!
其他

0.2.0 2024-06-25 19:32 UTC

This package is auto-updated.

Last update: 2024-09-27 16:33:07 UTC


README

这是一个简单的PHP包装器,用于流行的face-recognition Python包。

与其他类似包相反,此程序执行CLI face_detection 命令并读取输出。这简化了部署阶段,因为 face-recognition 包可以安装在Python隔离的虚拟环境中(例如,使用pipx,如Debian推荐),这可以防止Python导入库,但仍允许执行应用程序。

此外,这个库与InterventionImage集成,提供了对检测到的图像的方便操作。

这个项目最初是为了更好地显示从Wikipedia Commons检索并发布在TrendingOnWiki上的人的照片而实现的。

安装

# Or your preferred way to install the Python application
pipx install face-recognition

composer require madbob/face-recognition

示例

require "vendor/autoload.php";

use MadBob\FaceRecognition\FaceRecognition;

$master = new FaceRecognition();
$image = $master->loadImage('test1.jpg');
$faces = $image->bboxes();
$image->coverDownFace(1920, 1080)->toJpeg()->save('test2.jpg');

文档

首先,您必须初始化一个 MadBob\FaceRecognition\FaceRecognition 实例,其构造函数接受一个参数的关联数组。

接受的参数包括

nameusagedefault
exec_path找到 face_detection 可执行文件的路径。默认为空,假设它已经在 $PATH 中
model您希望使用的 face-recognition 模型。请参阅包的文档以获取详细信息
cpus读取图像时使用的CPU数量。 -1 表示“使用系统中的所有CPU”-1
graphic_driver用于处理InterventionImage图像的驱动程序。可以是 gdimagickgd
$master = new FaceRecognition([
    'exec_path' => '/usr/local/bin',
    'model' => 'hog',
    'cpus' => 2,
    'graphic_driver' => 'imagick',
]);

在这个实例中,您可以调用两个不同的函数: loadImage()loadFolder()。第一个函数接受单个图像的路径,并返回一个单独的 MadBob\FaceRecognition\Image 对象,而第二个解析给定文件夹中的所有图像,并返回相同对象类型的数组。

$image = $master->loadImage('/path/to/test1.jpg');
$images = $master->loadFolder('/path/to/many/photos/');

MadBob\FaceRecognition\Image 主要是一个围绕 Intervention\Image\Image 实例的包装器:在这个对象上,您可以调用InterventionImage提供的所有实用函数(调整大小、裁剪、保存等),以及一些自定义函数。

  • getPath() 返回原始图像的路径;
  • hasFaces() 根据图像是否包含至少一个检测到的面部返回 truefalse
  • bboxes() 返回一个对象数组,每个对象对应于每个检测到的面部,具有 x1x2y1y2 属性,分别持有其坐标。如果没有检测到面部,则返回一个空数组;
  • coverDownFace($width, $height) 返回一个已裁剪和调整大小的 Intervention\Image\Image 实例,以保持图像中找到的面部在中心;这可以与其他InterventioImage函数链接以保存操作后的图像或应用进一步转换。如果没有检测到面部,则仅使用 coverDown() 函数在InterventionImage中裁剪和调整大小。
$images = $master->loadFolder('/path/to/many/photos/');
foreach($images as $image) {
    echo $image->getPath() . ' : ' . count($image->bboxes() . "\n";
}

许可证

此代码是免费软件,根据MIT许可证授权。有关详细信息,请参阅 LICENSE.txt 文件。

版权 (C) 2024 Roberto Guido info@madbob.org