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

<?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;
}
}