初始化代码
7
app/Common/extend/tenxunyunimage/.gitignore
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
# Mac
|
||||
.DS_Store
|
||||
Icon?
|
||||
|
||||
# PhpStorm
|
||||
*.iml
|
||||
.idea/
|
||||
48
app/Common/extend/tenxunyunimage/QcloudImage/Auth.php
Normal file
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
/**
|
||||
* Signature create related functions.
|
||||
*/
|
||||
namespace QcloudImage;
|
||||
|
||||
/**
|
||||
* Auth class for creating reusable signature.
|
||||
*/
|
||||
class Auth {
|
||||
|
||||
public function __construct($appId, $secretId, $secretKey) {
|
||||
$this->appId = $appId;
|
||||
$this->secretId = $secretId;
|
||||
$this->secretKey = $secretKey;
|
||||
}
|
||||
/**
|
||||
* Return the appId
|
||||
*/
|
||||
public function getAppId() {
|
||||
return $this->appId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create reusable signature.
|
||||
* This signature will expire at time()+$howlong timestamp.
|
||||
* Return the signature on success.
|
||||
* Return false on fail.
|
||||
*/
|
||||
public function getSign($bucket, $howlong = 30) {
|
||||
if ($howlong <= 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$now = time();
|
||||
$expiration = $now + $howlong;
|
||||
$random = rand();
|
||||
|
||||
$plainText = "a=".$this->appId."&b=$bucket&k=".$this->secretId."&e=$expiration&t=$now&r=$random&f=";
|
||||
$bin = hash_hmac('SHA1', $plainText, $this->secretKey, true);
|
||||
|
||||
return base64_encode($bin.$plainText);
|
||||
}
|
||||
|
||||
private $appId = "";
|
||||
private $secretId = "";
|
||||
private $secretKey = "";
|
||||
}
|
||||
1780
app/Common/extend/tenxunyunimage/QcloudImage/CIClient.php
Normal file
55
app/Common/extend/tenxunyunimage/QcloudImage/Conf.php
Normal file
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
/**
|
||||
* Some settings for SDK.
|
||||
*/
|
||||
namespace QcloudImage;
|
||||
|
||||
/**
|
||||
* Conf class.
|
||||
*/
|
||||
class Conf {
|
||||
const VERSION = '2.0.0';
|
||||
const SERVER_ADDR = 'service.image.myqcloud.com';
|
||||
const SERVER_ADDR2 = 'recognition.image.myqcloud.com';
|
||||
|
||||
private $HOST = self::SERVER_ADDR2;
|
||||
private $REQ_TIMEOUT = 60;
|
||||
private $SCHEME = 'https';
|
||||
|
||||
public function useHttp() {
|
||||
$this->SCHEME = 'http';
|
||||
}
|
||||
public function useHttps() {
|
||||
$this->SCHEME = 'https';
|
||||
}
|
||||
public function setTimeout($timeout) {
|
||||
if ($timeout > 0) {
|
||||
$this->REQ_TIMEOUT = $timeout;
|
||||
}
|
||||
}
|
||||
|
||||
public function useNewDomain()
|
||||
{
|
||||
$this->HOST = self::SERVER_ADDR2;
|
||||
}
|
||||
|
||||
public function useOldDomain()
|
||||
{
|
||||
$this->HOST = self::SERVER_ADDR;
|
||||
}
|
||||
public function timeout() {
|
||||
return $this->REQ_TIMEOUT;
|
||||
}
|
||||
|
||||
public function buildUrl($uri) {
|
||||
return $this->SCHEME . '://' . $this->HOST . '/' . ltrim($uri, "/");
|
||||
}
|
||||
|
||||
public static function getUa($appid = null) {
|
||||
$ua = 'CIPhpSDK/'.self::VERSION.' ('.php_uname().')';
|
||||
if ($appid) {
|
||||
$ua .= " User($appid)";
|
||||
}
|
||||
return $ua;
|
||||
}
|
||||
}
|
||||
28
app/Common/extend/tenxunyunimage/QcloudImage/Error.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
/**
|
||||
* Error defination.
|
||||
*/
|
||||
namespace QcloudImage;
|
||||
|
||||
class Error {
|
||||
|
||||
/**
|
||||
* Create reusable signature.
|
||||
* This signature will expire at time()+$howlong timestamp.
|
||||
* Return the signature on success.
|
||||
* Return false on fail.
|
||||
*/
|
||||
public static function json($code, $message, $httpcode = 0) {
|
||||
return json_encode(array(
|
||||
'code' => $code,
|
||||
'message' => $message,
|
||||
'httpcode' => $httpcode,
|
||||
'data' => json_decode('{}',true)
|
||||
));
|
||||
}
|
||||
|
||||
public static $Param = -1;
|
||||
public static $Network = -2;
|
||||
public static $FilePath = -3;
|
||||
public static $Unknown = -4;
|
||||
}
|
||||
122
app/Common/extend/tenxunyunimage/QcloudImage/HttpClient.php
Normal file
@@ -0,0 +1,122 @@
|
||||
<?php
|
||||
/**
|
||||
* Http Client use curl.
|
||||
*/
|
||||
namespace QcloudImage;
|
||||
|
||||
function my_curl_reset($handler) {
|
||||
curl_setopt($handler, CURLOPT_URL, '');
|
||||
curl_setopt($handler, CURLOPT_HTTPHEADER, array());
|
||||
curl_setopt($handler, CURLOPT_POSTFIELDS, array());
|
||||
curl_setopt($handler, CURLOPT_TIMEOUT, 0);
|
||||
curl_setopt($handler, CURLOPT_SSL_VERIFYPEER, false);
|
||||
curl_setopt($handler, CURLOPT_SSL_VERIFYHOST, 0);
|
||||
curl_setopt($handler, CURLOPT_PROXY, null);
|
||||
}
|
||||
|
||||
class HttpClient {
|
||||
|
||||
private $proxy = '';
|
||||
|
||||
public function setProxy($proxy)
|
||||
{
|
||||
$this->proxy = $proxy;
|
||||
}
|
||||
|
||||
public function __destory() {
|
||||
if ($this->curlHandler) {
|
||||
curl_close($this->curlHandler);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* send http request
|
||||
* @param array $request http请求信息
|
||||
* url : 请求的url地址
|
||||
* method : 请求方法,'get', 'post', 'put', 'delete', 'head'
|
||||
* data : 请求数据,如有设置,则method为post
|
||||
* header : 需要设置的http头部
|
||||
* host : 请求头部host
|
||||
* timeout : 请求超时时间
|
||||
* cert : ca文件路径
|
||||
* ssl_version: SSL版本号
|
||||
* @return string http请求响应
|
||||
*/
|
||||
public function sendRequest($request) {
|
||||
if (!is_array($request) || !isset($request["url"])) {
|
||||
return false;
|
||||
}
|
||||
if ($this->curlHandler) {
|
||||
if (function_exists('curl_reset')) {
|
||||
curl_reset($this->curlHandler);
|
||||
} else {
|
||||
my_curl_reset($this->curlHandler);
|
||||
}
|
||||
} else {
|
||||
$this->curlHandler = curl_init();
|
||||
}
|
||||
|
||||
curl_setopt($this->curlHandler, CURLOPT_URL, $request['url']);
|
||||
|
||||
$method = 'GET';
|
||||
if (isset($request['method']) &&
|
||||
in_array(strtolower($request['method']), array('get', 'post', 'put', 'delete', 'head'))) {
|
||||
$method = strtoupper($request['method']);
|
||||
} else if (isset($request['data'])) {
|
||||
$method = 'POST';
|
||||
}
|
||||
|
||||
$header = isset($request['header']) ? $request['header'] : array();
|
||||
$header[] = 'Connection: keep-alive';
|
||||
if ('POST' == $method) {
|
||||
$header[] = 'Expect: ';
|
||||
}
|
||||
|
||||
isset($request['host']) && $header[] = 'Host:' . $request['host'];
|
||||
curl_setopt($this->curlHandler, CURLOPT_HTTPHEADER, $header);
|
||||
|
||||
if (empty($this->proxy)) {
|
||||
curl_setopt($this->curlHandler, CURLOPT_PROXY, null);
|
||||
} else {
|
||||
curl_setopt($this->curlHandler, CURLOPT_PROXY, $this->proxy);
|
||||
}
|
||||
|
||||
curl_setopt($this->curlHandler, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($this->curlHandler, CURLOPT_CUSTOMREQUEST, $method);
|
||||
isset($request['timeout']) && curl_setopt($this->curlHandler, CURLOPT_TIMEOUT, $request['timeout']);
|
||||
isset($request['data']) && in_array($method, array('POST', 'PUT')) &&
|
||||
curl_setopt($this->curlHandler, CURLOPT_POSTFIELDS, $request['data']);
|
||||
$ssl = substr($request['url'], 0, 8) == "https://" ? true : false;
|
||||
if (isset($request['cert'])) {
|
||||
curl_setopt($this->curlHandler, CURLOPT_SSL_VERIFYPEER,true);
|
||||
curl_setopt($this->curlHandler, CURLOPT_CAINFO, $request['cert']);
|
||||
curl_setopt($this->curlHandler, CURLOPT_SSL_VERIFYHOST,2);
|
||||
if (isset($request['ssl_version'])) {
|
||||
curl_setopt($this->curlHandler, CURLOPT_SSLVERSION, $request['ssl_version']);
|
||||
} else {
|
||||
curl_setopt($this->curlHandler, CURLOPT_SSLVERSION, 4);
|
||||
}
|
||||
} else if ($ssl) {
|
||||
curl_setopt($this->curlHandler, CURLOPT_SSL_VERIFYPEER,true); //true any ca
|
||||
curl_setopt($this->curlHandler, CURLOPT_SSL_VERIFYHOST,2);
|
||||
if (isset($request['ssl_version'])) {
|
||||
curl_setopt($this->curlHandler, CURLOPT_SSLVERSION, $request['ssl_version']);
|
||||
} else {
|
||||
curl_setopt($this->curlHandler, CURLOPT_SSLVERSION, 4);
|
||||
}
|
||||
}
|
||||
$ret = curl_exec($this->curlHandler);
|
||||
$this->httpInfo = curl_getinfo($this->curlHandler);
|
||||
return $ret;
|
||||
}
|
||||
|
||||
public function statusCode() {
|
||||
if ($this->httpInfo) {
|
||||
return $this->httpInfo['http_code'];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private $httpInfo;
|
||||
private $curlHandler;
|
||||
}
|
||||
224
app/Common/extend/tenxunyunimage/README.md
Normal file
@@ -0,0 +1,224 @@
|
||||
# tencentyun/image-php-sdk-v2.0
|
||||
[腾讯云](https://cloud.tencent.com) 云智AI应用服务智能图像 SDK for PHP
|
||||
|
||||
## 安装(直接下载源码集成)
|
||||
### 直接下载源码集成
|
||||
从github下载源码,并加载image-php-sdk-v2.0/index.php就可以了。
|
||||
调用请参考sample.php
|
||||
|
||||
### 1. 在腾讯云申请业务的授权
|
||||
授权包括:
|
||||
|
||||
APP_ID
|
||||
SECRET_ID
|
||||
SECRET_KEY
|
||||
BUCKET
|
||||
|
||||
### 2. 创建对应操作类的对象
|
||||
如果要使用图片,需要创建图片操作类对象
|
||||
|
||||
require_once __DIR__ . '/index.php';
|
||||
use QcloudImage\CIClient;
|
||||
|
||||
$client = new CIClient('APP_ID', 'SECRET_ID', 'SECRET_KEY', 'BUCKET');
|
||||
$client->setTimeout(30);
|
||||
|
||||
### 3. 调用对应的方法
|
||||
在创建完对象后,根据实际需求,调用对应的操作方法就可以了。sdk提供的方法包括:图片识别、人脸识别及人脸核身等。
|
||||
|
||||
#### 3.1 图片识别
|
||||
图片识别包括:图片鉴黄、图片标签、OCR-身份证识别及OCR-名片识别。
|
||||
|
||||
##### 图片鉴黄
|
||||
|
||||
```php
|
||||
//单个或多个图片Url
|
||||
var_dump ($client->pornDetect(array('urls'=>array('YOUR URL A',
|
||||
'YOUR URL B'))));
|
||||
//单个或多个图片File
|
||||
var_dump ($client->pornDetect(array('files'=>array('F:\pic\你好.jpg','G:\pic\test2.jpg'))));
|
||||
```
|
||||
|
||||
##### 图片标签
|
||||
|
||||
```php
|
||||
//单个图片url
|
||||
var_dump ($client->tagDetect(array('url'=>'YOUR URL')));
|
||||
//单个图片file
|
||||
var_dump ($client->tagDetect(array('file'=>'G:\pic\hot1.jpg')));
|
||||
//单个图片内容
|
||||
var_dump ($client->tagDetect(array('buffer'=>file_get_contents('G:\pic\hot1.jpg'))));
|
||||
```
|
||||
|
||||
##### OCR-身份证识别
|
||||
|
||||
```php
|
||||
//单个或多个图片Url,识别身份证正面
|
||||
var_dump ($client->idcardDetect(array('urls'=>array('YOUR URL A',
|
||||
'YOUR URL B')), 0));
|
||||
//单个或多个图片file,识别身份证正面
|
||||
var_dump ($client->idcardDetect(array('files'=>array('F:\pic\id6_zheng.jpg', 'F:\pic\id2_zheng.jpg')), 0));
|
||||
//单个或多个图片内容,识别身份证正面
|
||||
var_dump ($client->idcardDetect(array('buffers'=>array(file_get_contents('F:\pic\id6_zheng.jpg'),
|
||||
file_get_contents('F:\pic\id2_zheng.jpg'))), 0));
|
||||
|
||||
//单个或多个图片Url,识别身份证反面
|
||||
var_dump ($client->idcardDetect(array('urls'=>array('YOUR URL C',
|
||||
'YOUR URL D')), 1));
|
||||
//单个或多个图片file,识别身份证反面
|
||||
var_dump ($client->idcardDetect(array('files'=>array('F:\pic\id5_fan.jpg', 'F:\pic\id7_fan.png')), 1));
|
||||
//单个或多个图片内容,识别身份证反面
|
||||
var_dump ($client->idcardDetect(array('buffers'=>array(file_get_contents('F:\pic\id5_fan.jpg'),
|
||||
file_get_contents('F:\pic\id7_fan.jpg'))), 1));
|
||||
```
|
||||
|
||||
##### OCR-名片识别
|
||||
```php
|
||||
//单个或多个图片Url
|
||||
var_dump ($client->namecardDetect(array('urls'=>array('YOUR URL A',
|
||||
'YOUR URL B')), 0));
|
||||
//单个或多个图片file,
|
||||
var_dump ($client->namecardDetect(array('files'=>array('F:\pic\r.jpg', 'F:\pic\name2.jpg')), 1));
|
||||
//单个或多个图片内容
|
||||
var_dump ($client->namecardDetect(array('buffers'=>array(file_get_contents('F:\pic\name1.jpg'),
|
||||
file_get_contents('F:\pic\name2.jpg'))), 0));
|
||||
```
|
||||
|
||||
#### 3.2 人脸识别
|
||||
人脸识别包括:人脸检测、五官定位、个体信息管理、人脸验证、人脸对比及人脸检索。
|
||||
|
||||
#### 人脸检测
|
||||
|
||||
```php
|
||||
//单个图片Url, mode:1为检测最大的人脸 , 0为检测所有人脸
|
||||
var_dump ($client->faceDetect(array('url'=>'YOUR URL'), 1));
|
||||
//单个图片file,mode:1为检测最大的人脸 , 0为检测所有人脸
|
||||
var_dump ($client->faceDetect(array('file'=>'F:\pic\face1.jpg'),0));
|
||||
//单个图片内容,mode:1为检测最大的人脸 , 0为检测所有人脸
|
||||
var_dump ($client->faceDetect(array('buffer'=>file_get_contents('F:\pic\face1.jpg')), 1));
|
||||
```
|
||||
|
||||
##### 五官定位
|
||||
|
||||
```php
|
||||
//单个图片Url,mode:1为检测最大的人脸 , 0为检测所有人脸
|
||||
var_dump ($client->faceShape(array('url'=>'YOUR URL'),1));
|
||||
//单个图片file,mode:1为检测最大的人脸 , 0为检测所有人脸
|
||||
var_dump ($client->faceShape(array('file'=>'F:\pic\face1.jpg'),0));
|
||||
//单个图片内容,mode:1为检测最大的人脸 , 0为检测所有人脸
|
||||
var_dump ($client->faceShape(array('buffer'=>file_get_contents('F:\pic\face1.jpg')), 1));
|
||||
```
|
||||
|
||||
##### 个体信息管理
|
||||
```php
|
||||
//个体创建,创建一个Person,并将Person放置到group_ids指定的组当中,不存在的group_id会自动创建。
|
||||
//创建一个Person, 使用图片url
|
||||
var_dump ($client->faceNewPerson('person1111', array('group11',), array('url'=>'YOUR URL'), 'xiaoxin'));
|
||||
//创建一个Person, 使用图片file
|
||||
var_dump ($client->faceNewPerson('person2111', array('group11',), array('file'=>'F:\pic\hot1.jpg')));
|
||||
//创建一个Person, 使用图片内容
|
||||
var_dump ($client->faceNewPerson('person3111', array('group11',), array('buffer'=>file_get_contents('F:\pic\zhao1.jpg'))));
|
||||
|
||||
//增加人脸,将一组Face加入到一个Person中。
|
||||
//将单个或者多个Face的url加入到一个Person中
|
||||
var_dump ($client->faceAddFace('person1111', array('urls'=>array('YOUR URL A',
|
||||
'YOUR URL B'))));
|
||||
//将单个或者多个Face的file加入到一个Person中
|
||||
var_dump ($client->faceAddFace('person2111', array('files'=>array('F:\pic\yang.jpg','F:\pic\yang2.jpg'))));
|
||||
//将单个或者多个Face的文件内容加入到一个Person中
|
||||
var_dump ($client->faceAddFace('person3111', array('buffers'=>array(file_get_contents('F:\pic\yang.jpg'),file_get_contents('F:\pic\yang2.jpg')))));
|
||||
|
||||
// 删除人脸,删除一个person下的face
|
||||
var_dump ($client->faceDelFace('person1', array('12346',)));
|
||||
|
||||
//设置信息
|
||||
var_dump ($client->faceSetInfo('person1', 'fanbing'));
|
||||
|
||||
//获取信息
|
||||
var_dump ($client->faceGetInfo('person1'));
|
||||
|
||||
//获取组列表
|
||||
var_dump ($client->faceGetGroupIds());
|
||||
|
||||
//获取人列表
|
||||
var_dump ($client->faceGetPersonIds('group1'));
|
||||
|
||||
//获取人脸列表
|
||||
var_dump ($client->faceGetFaceIds('person1'));
|
||||
|
||||
//获取人脸信息
|
||||
var_dump ($client->faceGetFaceInfo('1704147773393235686'));
|
||||
|
||||
//删除个人
|
||||
var_dump ($client->faceDelPerson('person11'));
|
||||
```
|
||||
|
||||
##### 人脸验证
|
||||
给定一个Face和一个Person,返回是否是同一个人的判断以及置信度
|
||||
|
||||
```php
|
||||
//单个图片Url
|
||||
var_dump ($client->faceVerify('person1', array('url'=>'YOUR URL')));
|
||||
//单个图片file
|
||||
var_dump ($client->faceVerify('person3111', array('file'=>'F:\pic\yang3.jpg')));
|
||||
//单个图片内容
|
||||
var_dump ($client->faceVerify('person3111', array('buffer'=>file_get_contents('F:\pic\yang3.jpg'))));
|
||||
```
|
||||
|
||||
##### 人脸检索
|
||||
对于一个待识别的人脸图片,在一个Group中识别出最相似的Top5 Person作为其身份返回,返回的Top5中按照相似度从大到小排列。
|
||||
|
||||
```php
|
||||
//单个文件url
|
||||
var_dump ($client->faceIdentify('group1', array('url'=>'YOUR URL')));
|
||||
//单个文件file
|
||||
var_dump ($client->faceIdentify('group11', array('file'=>'F:\pic\yang3.jpg')));
|
||||
//单个文件内容
|
||||
var_dump ($client->faceIdentify('group11', array('buffer'=>file_get_contents('F:\pic\yang3.jpg'))));
|
||||
```
|
||||
|
||||
##### 人脸对比
|
||||
|
||||
```php
|
||||
//两个对比图片的文件url
|
||||
var_dump ($client->faceCompare(array('url'=>"YOUR URL A"),
|
||||
array('url'=>'YOUR URL B')));
|
||||
//两个对比图片的文件file
|
||||
var_dump ($client->faceCompare(array('file'=>'F:\pic\yang.jpg'), array('file'=>'F:\pic\yang2.jpg')));
|
||||
//两个对比图片的文件内容
|
||||
var_dump ($client->faceCompare(array('file'=>'F:\pic\yang.jpg'), array('file'=>'F:\pic\yang2.jpg')));
|
||||
```
|
||||
|
||||
|
||||
#### 3.3 人脸核身
|
||||
|
||||
##### 身份证识别对比
|
||||
|
||||
```php
|
||||
//身份证url
|
||||
var_dump ($client->faceIdCardCompare('xxxxxxxxxxx', 'xxxxxxxxxxx', array('url'=>'YOUR URL')));
|
||||
//身份证文件file
|
||||
var_dump ($client->faceIdCardCompare('xxxxxxxxxxx', 'xxxxxxxxxxx', array('file'=>'F:\pic\idcard.jpg')));
|
||||
//身份证文件内容
|
||||
var_dump ($client->faceIdCardCompare('xxxxxxxxxxx', 'xxxxxxxxxxx', array('buffer'=>file_get_contents('F:\pic\idcard.jpg'))));
|
||||
```
|
||||
|
||||
##### 活体检测—获取唇语验证码
|
||||
|
||||
```php
|
||||
$obj = $client->faceLiveGetFour();
|
||||
var_dump ($obj);
|
||||
$validate_data = $obj['data']['validate_data'];
|
||||
```
|
||||
|
||||
##### 活体检测-视频与用户照片的比对
|
||||
|
||||
```php
|
||||
var_dump ($client->faceLiveDetectFour($validate_data, array('file'=>'F:\pic\ZOE_0171.mp4'), False, array('F:\pic\idcard.jpg')));
|
||||
```
|
||||
|
||||
##### 活体检测-视频与身份证高清照片的比对
|
||||
|
||||
```php
|
||||
var_dump ($client->faceIdCardLiveDetectFour($validate_data, array('file'=>'F:\pic\ZOE_0171.mp4'), 'xxxxxxxxxxx', 'xxxxxxxxxxx'));
|
||||
```
|
||||
BIN
app/Common/extend/tenxunyunimage/assets/face_02.jpg
Normal file
|
After Width: | Height: | Size: 160 KiB |
BIN
app/Common/extend/tenxunyunimage/assets/face_05.jpg
Normal file
|
After Width: | Height: | Size: 131 KiB |
BIN
app/Common/extend/tenxunyunimage/assets/icon_face_01.jpg
Normal file
|
After Width: | Height: | Size: 9.6 KiB |
BIN
app/Common/extend/tenxunyunimage/assets/icon_id_01.jpg
Normal file
|
After Width: | Height: | Size: 153 KiB |
BIN
app/Common/extend/tenxunyunimage/assets/icon_id_02.jpg
Normal file
|
After Width: | Height: | Size: 120 KiB |
BIN
app/Common/extend/tenxunyunimage/assets/icon_id_03.jpg
Normal file
|
After Width: | Height: | Size: 114 KiB |
BIN
app/Common/extend/tenxunyunimage/assets/icon_id_04.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
app/Common/extend/tenxunyunimage/assets/icon_imag_01.jpg
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
app/Common/extend/tenxunyunimage/assets/icon_ocr_card_1.jpg
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
app/Common/extend/tenxunyunimage/assets/icon_ocr_jsz_01.jpg
Normal file
|
After Width: | Height: | Size: 126 KiB |
BIN
app/Common/extend/tenxunyunimage/assets/icon_ocr_license_3.jpg
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
app/Common/extend/tenxunyunimage/assets/icon_ocr_xsz_01.jpg
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
app/Common/extend/tenxunyunimage/assets/icon_porn04.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
app/Common/extend/tenxunyunimage/assets/icon_porn05.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
app/Common/extend/tenxunyunimage/assets/icon_porn06.jpg
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
app/Common/extend/tenxunyunimage/assets/livedetectpicture.jpg
Normal file
|
After Width: | Height: | Size: 73 KiB |
BIN
app/Common/extend/tenxunyunimage/assets/ocr_card_01.jpg
Normal file
|
After Width: | Height: | Size: 115 KiB |
BIN
app/Common/extend/tenxunyunimage/assets/ocr_common09.jpg
Normal file
|
After Width: | Height: | Size: 360 KiB |
BIN
app/Common/extend/tenxunyunimage/assets/ocr_hw_03.png
Normal file
|
After Width: | Height: | Size: 419 KiB |
BIN
app/Common/extend/tenxunyunimage/assets/ocr_namecard_01.jpg
Normal file
|
After Width: | Height: | Size: 122 KiB |
BIN
app/Common/extend/tenxunyunimage/assets/ocr_namecard_02.jpg
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
app/Common/extend/tenxunyunimage/assets/ocr_yyzz_02.jpg
Normal file
|
After Width: | Height: | Size: 122 KiB |
11
app/Common/extend/tenxunyunimage/autoload.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
function classLoader1($class)
|
||||
{
|
||||
$path = str_replace('\\', DIRECTORY_SEPARATOR, $class);
|
||||
$file = __DIR__ . DIRECTORY_SEPARATOR . $path . '.php';
|
||||
if (file_exists($file)) {
|
||||
require_once $file;
|
||||
}
|
||||
}
|
||||
spl_autoload_register('classLoader1');
|
||||
3
app/Common/extend/tenxunyunimage/index.php
Normal file
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
|
||||
require_once __DIR__ . '/autoload.php';
|
||||
218
app/Common/extend/tenxunyunimage/sample.php
Normal file
@@ -0,0 +1,218 @@
|
||||
<?php
|
||||
|
||||
require_once __DIR__ . '/index.php';
|
||||
use QcloudImage\CIClient;
|
||||
|
||||
$appid = 'YOUR_APPID';
|
||||
$secretId = 'YOUR_SECRETID';
|
||||
$secretKey = 'YOUR_SECRETKEY';
|
||||
$bucket = 'YOUR_BUCKET';
|
||||
|
||||
$client = new CIClient($appid, $secretId, $secretKey, $bucket);
|
||||
|
||||
//推荐使用https
|
||||
$client->useHttps();
|
||||
|
||||
// 设置超时
|
||||
$client->setTimeout(30);
|
||||
|
||||
// 选择服务器域名, 推荐使用新域名 useNewDomain ( recognition.image.myqcloud.com )
|
||||
//
|
||||
// 如果你:
|
||||
// 1.正在使用人脸识别系列功能( https://cloud.tencent.com/product/FaceRecognition/developer )
|
||||
// 2.并且是通过旧域名访问的
|
||||
// 那么: 请继续使用旧域名
|
||||
$client->useNewDomain();
|
||||
|
||||
//根据你的网络环境, 可能需要设置代理
|
||||
//$client->setProxy('127.0.0.1:12759');
|
||||
|
||||
//图片鉴黄
|
||||
//单个或多个图片Url
|
||||
var_dump ($client->pornDetect(array('urls'=>array('http://open.youtu.qq.com./static/img/image_porn04.87591fe.jpg'))));
|
||||
//单个或多个图片File
|
||||
var_dump ($client->pornDetect(array('files'=>array('assets/icon_porn04.jpg'))));
|
||||
|
||||
//图片标签
|
||||
//单个图片url
|
||||
var_dump ($client->tagDetect(array('url'=>'http://open.youtu.qq.com./static/img/imag_02.f43527f.jpg')));
|
||||
//单个图片file
|
||||
var_dump ($client->tagDetect(array('file'=>'assets/icon_imag_01.jpg')));
|
||||
//单个图片内容
|
||||
var_dump ($client->tagDetect(array('buffer'=>file_get_contents('assets/icon_imag_01.jpg'))));
|
||||
|
||||
//身份证识别
|
||||
//单个或多个图片Url,识别身份证正面
|
||||
var_dump ($client->idcardDetect(array('urls'=>array('http://open.youtu.qq.com./static/img/ocr_id_01.883a2df.jpg')), 0/*0为正面,1为反面*/));
|
||||
//单个或多个图片file,识别身份证正面
|
||||
var_dump ($client->idcardDetect(array('files'=>array('assets/icon_id_01.jpg')), 0/*0为正面,1为反面*/));
|
||||
//单个或多个图片内容,识别身份证正面
|
||||
var_dump ($client->idcardDetect(array('buffers'=>array(file_get_contents('assets/icon_id_01.jpg'))), 0/*0为正面,1为反面*/));
|
||||
|
||||
//名片识别v2
|
||||
//单个或多个图片Url
|
||||
var_dump ($client->namecardV2Detect(array('urls'=>array('http://open.youtu.qq.com/app/img/experience/char_general/ocr_namecard_01.jpg'))));
|
||||
//单个或多个图片file
|
||||
var_dump ($client->namecardV2Detect(array('files'=>array('assets/ocr_namecard_01.jpg'))));
|
||||
//单个或多个图片内容
|
||||
var_dump ($client->namecardV2Detect(array('buffers'=>array(file_get_contents('assets/ocr_namecard_01.jpg')))));
|
||||
|
||||
//行驶证驾驶证识别
|
||||
//单个或多个图片file
|
||||
var_dump ($client->drivingLicence(array('file'=>'assets/icon_ocr_jsz_01.jpg'),1/*0表示行驶证,1表示驾驶证*/));
|
||||
//使用buffer
|
||||
var_dump ($client->drivingLicence(array('buffer'=>file_get_contents('assets/icon_ocr_jsz_01.jpg')),1/*0表示行驶证,1表示驾驶证*/));
|
||||
//单个或多个图片Url
|
||||
var_dump ($client->drivingLicence(array('url'=>'http://open.youtu.qq.com./static/img/ocr_jsz_01.53c2885.jpg'), 1/*0表示行驶证,1表示驾驶证*/));
|
||||
|
||||
//车牌号识别
|
||||
//单个图片file
|
||||
var_dump ($client->plate(array('file'=>'assets/icon_ocr_license_3.jpg')));
|
||||
//单个图片的URL
|
||||
var_dump ($client->plate(array('url'=>'http://open.youtu.qq.com./static/img/ocr_license_01.d7ac40a.jpg')));
|
||||
|
||||
//银行卡识别
|
||||
//单个图片file
|
||||
var_dump ($client->bankcard(array('file'=>'assets/ocr_card_01.jpg')));
|
||||
//使用buffer
|
||||
var_dump ($client->bankcard(array('buffer'=>file_get_contents('assets/ocr_card_01.jpg'))));
|
||||
//单个图片的URL
|
||||
var_dump ($client->bankcard(array('url'=>'http://open.youtu.qq.com./static/img/ocr_card_01.dd4aada.jpg')));
|
||||
|
||||
//营业执照识别
|
||||
//单个图片识别
|
||||
var_dump ($client->bizlicense(array('file'=>'assets/ocr_yyzz_02.jpg')));
|
||||
//使用buffer
|
||||
var_dump ($client->bizlicense(array('buffer'=>file_get_contents('assets/ocr_yyzz_02.jpg'))));
|
||||
//单个图片的URL
|
||||
var_dump ($client->bizlicense(array('url'=>'http://open.youtu.qq.com./static/img/ocr_yyzz_01.1d874f9.jpg')));
|
||||
|
||||
//通用印刷体的识别
|
||||
//单个图片的识别
|
||||
var_dump ($client->general(array('file'=>'assets/ocr_common09.jpg')));
|
||||
//单个图片的URL
|
||||
var_dump ($client->general(array('url'=>'http://open.youtu.qq.com/static/img/ocr_common05.df60ecc.jpg')));
|
||||
|
||||
//手写体识别
|
||||
//单个图片的识别
|
||||
var_dump ($client->handwriting(array('file'=>'assets/ocr_hw_03.png')));
|
||||
//单个图片的URL
|
||||
var_dump ($client->handwriting(array('url'=>'http://open.youtu.qq.com./static/img/ocr_hw_03.2174a0a.jpg')));
|
||||
|
||||
//人脸检测
|
||||
//单个图片Url, mode:1为检测最大的人脸 , 0为检测所有人脸
|
||||
var_dump ($client->faceDetect(array('url'=>'https://open.youtu.qq.com/static/img/face_05.b64219d.jpg'), 0));
|
||||
//单个图片file,mode:1为检测最大的人脸 , 0为检测所有人脸
|
||||
var_dump ($client->faceDetect(array('file'=>'assets/face_05.jpg'),0));
|
||||
//单个图片内容,mode:1为检测最大的人脸 , 0为检测所有人脸
|
||||
var_dump ($client->faceDetect(array('buffer'=>file_get_contents('assets/face_05.jpg')), 0));
|
||||
|
||||
//五官定位
|
||||
//单个图片Url,mode:1为检测最大的人脸 , 0为检测所有人脸
|
||||
var_dump ($client->faceShape(array('url'=>'https://open.youtu.qq.com/static/img/face_05.b64219d.jpg'),0));
|
||||
//单个图片Url,mode:1为检测最大的人脸 , 0为检测所有人脸
|
||||
var_dump ($client->faceShape(array('file'=>'assets/face_05.jpg'),0));
|
||||
//单个图片Url,mode:1为检测最大的人脸 , 0为检测所有人脸
|
||||
var_dump ($client->faceShape(array('buffer'=>file_get_contents('assets/face_05.jpg')), 0));
|
||||
|
||||
|
||||
//创建一个Person,并将Person放置到group_ids指定的组当中, 使用图片url
|
||||
var_dump ($client->faceNewPerson('personId0', array('groupId0'), array('url'=>'http://open.youtu.qq.com./static/img/face_01.f0c4a0c.jpg'), 'personName0','personTag0'));
|
||||
//创建一个Person,并将Person放置到group_ids指定的组当中, 使用图片file
|
||||
var_dump ($client->faceNewPerson('personId1', array('groupId0'), array('file'=>'assets/face_02.jpg'), 'personName1', 'personTag1'));
|
||||
//创建一个Person,并将Person放置到group_ids指定的组当中, 使用图片内容
|
||||
var_dump ($client->faceNewPerson('personId2', array('groupId0'), array('buffer'=>file_get_contents('assets/icon_id_01.jpg')), 'personName2', 'personTag2'));
|
||||
|
||||
|
||||
//增加人脸,将单个或者多个Face的url加入到一个Person中.注意,一个Face只能被加入到一个Person中。 一个Person最多允许包含20个Face
|
||||
var_dump ($client->faceAddFace('person_one', array('urls'=>array('YOUR URL A','YOUR URL B'))));
|
||||
//增加人脸,将单个或者多个Face的file加入到一个Person中.注意,一个Face只能被加入到一个Person中。 一个Person最多允许包含20个Face
|
||||
var_dump ($client->faceAddFace('person_two', array('files'=>array('F:\pic\yang.jpg','F:\pic\yang2.jpg'))));
|
||||
//增加人脸,将单个或者多个Face的文件内容加入到一个Person中.注意,一个Face只能被加入到一个Person中。 一个Person最多允许包含20个Face
|
||||
var_dump ($client->faceAddFace('person_three', array('buffers'=>array(file_get_contents('F:\pic\yang.jpg'),file_get_contents('F:\pic\yang2.jpg')))));
|
||||
|
||||
//删除人脸
|
||||
var_dump ($client->faceDelFace('person_one', array('one',)));
|
||||
//设置信息
|
||||
var_dump ($client->faceSetInfo('person_one', 'fanbing'));
|
||||
//获取信息
|
||||
var_dump ($client->faceGetInfo('person_one'));
|
||||
//获取组列表
|
||||
var_dump ($client->faceGetGroupIds());
|
||||
//获取人列表
|
||||
var_dump ($client->faceGetPersonIds('group1'));
|
||||
//获取人脸列表
|
||||
var_dump ($client->faceGetFaceIds('person_one'));
|
||||
//获取人脸信息
|
||||
var_dump ($client->faceGetFaceInfo('1704147773393235686'));
|
||||
//删除个人
|
||||
var_dump ($client->faceDelPerson('person_one'));
|
||||
|
||||
//人脸验证
|
||||
//单个图片Url
|
||||
var_dump ($client->faceVerify('person1', array('url'=>'YOUR URL')));
|
||||
//单个图片file
|
||||
var_dump ($client->faceVerify('person3111', array('file'=>'F:\pic\yang3.jpg')));
|
||||
//单个图片内容
|
||||
var_dump ($client->faceVerify('person3111', array('buffer'=>file_get_contents('F:\pic\yang3.jpg'))));
|
||||
|
||||
//人脸检索
|
||||
//单个文件url
|
||||
var_dump ($client->faceIdentify('group1', array('url'=>'YOUR URL')));
|
||||
//单个文件file
|
||||
var_dump ($client->faceIdentify('group11', array('file'=>'F:\pic\yang3.jpg')));
|
||||
//单个文件内容
|
||||
var_dump ($client->faceIdentify('group11', array('buffer'=>file_get_contents('F:\pic\yang3.jpg'))));
|
||||
|
||||
//人脸对比
|
||||
//两个对比图片的文件url
|
||||
var_dump ($client->faceCompare(array('url'=>"YOUR URL A"), array('url'=>'YOUR URL B')));
|
||||
//两个对比图片的文件file
|
||||
var_dump ($client->faceCompare(array('file'=>'F:\pic\yang.jpg'), array('file'=>'F:\pic\yang2.jpg')));
|
||||
//两个对比图片的文件内容
|
||||
var_dump ($client->faceCompare( array('buffer'=>file_get_contents('F:\pic\yang.jpg')), array('buffer'=>file_get_contents('F:\pic\yang3.jpg'))));
|
||||
|
||||
|
||||
//身份证识别对比
|
||||
//身份证url
|
||||
var_dump ($client->faceIdCardCompare('ID CARD NUM', 'NAME', array('url'=>'YOUR URL')));
|
||||
//身份证文件file
|
||||
var_dump ($client->faceIdCardCompare('ID CARD NUM', 'NAME', array('file'=>'F:\pic\idcard.jpg')));
|
||||
//身份证文件内容
|
||||
var_dump ($client->faceIdCardCompare('ID CARD NUM', 'NAME', array('buffer'=>file_get_contents('F:\pic\idcard.jpg'))));
|
||||
|
||||
|
||||
//人脸核身
|
||||
//活体检测第一步:获取唇语(验证码)
|
||||
$obj = $client->faceLiveGetFour();
|
||||
var_dump ($obj);
|
||||
$faceObj = json_decode($obj, true);
|
||||
var_dump ($faceObj);
|
||||
$validate_data = '';
|
||||
if ($faceObj && isset($faceObj['data']['validate_data'])) {
|
||||
$validate_data = $faceObj['data']['validate_data'];
|
||||
}
|
||||
var_dump ($validate_data);
|
||||
|
||||
//活体检测第二步:检测
|
||||
var_dump ($client->faceLiveDetectFour($validate_data, array('file'=>'F:\pic\ZOE_0171.mp4'), False, array('F:\pic\idcard.jpg')));
|
||||
//活体检测第二步:检测--对比指定身份信息
|
||||
var_dump ($client->faceIdCardLiveDetectFour($validate_data, array('file'=>'F:\pic\ZOE_0171.mp4'), '330782198802084329', '季锦锦'));
|
||||
|
||||
//人脸静态活体检测
|
||||
//使用image的检测
|
||||
var_dump ($client->liveDetectPicture(array('file'=>'F:\pic\face1.jpg'),'123456'));
|
||||
//使用buffer
|
||||
var_dump ($client->liveDetectPicture(array('buffer'=>file_get_contents('F:\pic\face1.jpg')),'123456'));
|
||||
//单个图片的URL
|
||||
var_dump ($client->liveDetectPicture(array('url'=>'YOUR URL'),'123456'));
|
||||
|
||||
//多脸检索
|
||||
//使用 image 和 group_id 的请求
|
||||
var_dump ($client->multidentify(array('file'=>'F:\pic\r2.jpg'), array('group_id'=>'tencent')));
|
||||
//使用 image 和 group_ids 的请求
|
||||
var_dump ($client->multidentify(array('file'=>'F:\pic\face1.jpg'), array('group_ids'=>array("tencent","qq"))));
|
||||
//使用 url 和 group_id 的请求
|
||||
var_dump ($client->multidentify(array('url'=>'YOUR URL'), array('group_id'=>'tencent')));
|
||||
//使用 url 和 group_ids 的请求
|
||||
var_dump ($client->multidentify(array('url'=>'YOUR URL') , array('group_ids'=>array("tencent","qq"))));
|
||||