You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.8 KiB
95 lines
2.8 KiB
<?php
|
|
|
|
namespace ali\alibabacloud\ivision\facebody;
|
|
|
|
|
|
use ali\oss\Oss;
|
|
use AlibabaCloud\SDK\Facebody\V20191230\Models\CompareFaceAdvanceRequest;
|
|
use AlibabaCloud\SDK\Facebody\V20191230\Models\CompareFaceRequest;
|
|
use AlibabaCloud\SDK\Facebody\V20191230\Models\DetectLivingFaceRequest\tasks;
|
|
|
|
use \Exception;
|
|
use AlibabaCloud\Tea\Exception\TeaError;
|
|
use AlibabaCloud\Tea\Utils\Utils;
|
|
|
|
use AlibabaCloud\SDK\Facebody\V20191230\Models\DetectVideoLivingFaceRequest;
|
|
use AlibabaCloud\SDK\Facebody\V20191230\Models\DetectLivingFaceRequest;
|
|
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
|
|
|
|
use GuzzleHttp\Psr7\Stream;
|
|
|
|
class Compare extends Base
|
|
{
|
|
/**
|
|
* 人脸对比
|
|
* @param string $image_url_a 图像A的URL地址
|
|
* @param string $image_url_b 图像B的URL地址
|
|
* @param boolean $is_same_region 是否上海地域
|
|
* @date 2022-12-15
|
|
*/
|
|
public function compareFace($image_url_a, $image_url_b, $is_same_region = true)
|
|
{
|
|
$client = self::createClient();
|
|
|
|
// 是同一地域(上海)
|
|
if ($is_same_region) {
|
|
$data = [
|
|
"imageURLA" => $image_url_a,
|
|
"imageURLB" => $image_url_b
|
|
];
|
|
$compareFaceRequest = new CompareFaceRequest($data);
|
|
} else {
|
|
$file_a = fopen($image_url_a, 'rb');
|
|
$stream_a = new Stream($file_a);
|
|
|
|
$file_b = fopen($image_url_b, 'rb');
|
|
$stream_b = new Stream($file_b);
|
|
|
|
$data = [
|
|
"imageURLAObject" => $stream_a,
|
|
"imageURLBObject" => $stream_b
|
|
];
|
|
|
|
$compareFaceAdvanceRequest = new CompareFaceAdvanceRequest($data);
|
|
}
|
|
|
|
|
|
|
|
$runtime = new RuntimeOptions([]);
|
|
try {
|
|
// 复制代码运行请自行打印 API 的返回值
|
|
if($is_same_region){
|
|
$result = $client->compareFaceWithOptions($compareFaceRequest, $runtime);
|
|
}else{
|
|
$result = $client->compareFaceAdvance($compareFaceAdvanceRequest, $runtime);
|
|
}
|
|
|
|
|
|
$result_array = $result->toMap();
|
|
$result = $result_array['body'];
|
|
} catch (Exception $error) {
|
|
if (!($error instanceof TeaError)) {
|
|
$error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
|
|
}
|
|
|
|
if ($error->getErrorInfo()) {
|
|
$result = $error->getErrorInfo();
|
|
$result = $result['data'];
|
|
} else {
|
|
$result = [
|
|
'Code' => -1,
|
|
'Message' => $error->message
|
|
];
|
|
}
|
|
|
|
}
|
|
|
|
// 记录日志
|
|
$uid = defined('UID') ? UID : '';
|
|
platformLog($data, $result, 'alibaba_cloud_ivision_face_body_compare_face_uid_' . $uid);
|
|
|
|
return $result;
|
|
}
|
|
|
|
}
|