madbob / face-recognition
face_recognition 包的包装器
Requires
- intervention/image: ^3.4
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
实例,其构造函数接受一个参数的关联数组。
接受的参数包括
name | usage | default |
---|---|---|
exec_path | 找到 face_detection 可执行文件的路径。默认为空,假设它已经在 $PATH 中 | |
model | 您希望使用的 face-recognition 模型。请参阅包的文档以获取详细信息 | |
cpus | 读取图像时使用的CPU数量。 -1 表示“使用系统中的所有CPU” | -1 |
graphic_driver | 用于处理InterventionImage图像的驱动程序。可以是 gd 或 imagick | gd |
$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()
根据图像是否包含至少一个检测到的面部返回true
或false
;bboxes()
返回一个对象数组,每个对象对应于每个检测到的面部,具有x1
、x2
、y1
和y2
属性,分别持有其坐标。如果没有检测到面部,则返回一个空数组;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