阿里雲人臉識別接口調用。


1.阿里雲開通人臉識別

2.以人臉屬性識別為例

3.為了安全起見,我們需要搭建一個服務器,以nodejs為例

 

nodejs代碼

var request = require('request');
var url = require('url');
var crypto = require('crypto');
var date = new Date().toUTCString();
var express = require('express');
// 這里填寫AK和請求
var ak_id = '你的ak';
var ak_secret = '你的ak_secret';
var app = express();


//人臉屬性識別
function getFaceAttribute(obj,getMsg){
	var options = {
         //這里調用的是人臉屬性識別接口
	  url : 'https://dtplus-cn-shanghai.data.aliyuncs.com/face/attribute',
	  method: 'POST',
	  body:obj,//這里傳遞參數
	  headers: {
	    'accept': 'application/json',
	    'content-type': 'application/json',
	    'date': date,
	    'Authorization': ''
	  }
	};
	md5 = function(buffer) {
	  var hash;
	  hash = crypto.createHash('md5');
	  hash.update(buffer);
	  return hash.digest('base64');
	};
	
	sha1 = function(stringToSign, secret) {
	  var signature;
	  return signature = crypto.createHmac('sha1', secret).update(stringToSign).digest().toString('base64');
	};
	
	// step1: 組stringToSign [StringToSign = #{method}\\n#{accept}\\n#{data}\\n#{contentType}\\n#{date}\\n#{action}]
	var body = options.body || '';
	var bodymd5;
	if(body === void 0 || body === ''){
	  bodymd5 = body;
	} else {
	  bodymd5 = md5(new Buffer(body));
	}
	console.log(bodymd5)
	var stringToSign = options.method + "\n" + options.headers.accept + "\n" + bodymd5 + "\n" + options.headers['content-type'] + "\n" + options.headers.date + "\n" + url.parse(options.url).path;
	console.log("step1-Sign string:", stringToSign);
	// step2: 加密 [Signature = Base64( HMAC-SHA1( AccessSecret, UTF-8-Encoding-Of(StringToSign) ) )]
	var signature = sha1(stringToSign, ak_secret);
	// console.log("step2-signature:", signature);
	// step3: 組authorization header [Authorization =  Dataplus AccessKeyId + ":" + Signature]
	var authHeader = "Dataplus " + ak_id + ":" + signature;
	console.log("step3-authorization Header:", authHeader);
	options.headers.Authorization = authHeader;
	console.log('authHeader', authHeader);
	// step4: send request
	  /*if (error) {
	    console.log("error", error)
	  }
	  console.log("step4-response body:", response.statusCode, body)*/
	function callback(error, response, body) {
		getMsg(error,response,body);
	}
	request(options, callback);
}


//設置跨域訪問
app.all('*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
    res.header("X-Powered-By",' 3.2.1')
    res.header("Content-Type", "application/json;charset=utf-8");
    next();
});
app.get('/face/getFaceAttribute', function(req, res) {
	getFaceAttribute('{image_url:"'+req.query.image_url+'"}',function(error,response,body){
		if (error) {
	    	console.log("error", error)
		}
		console.log("step4-response body:", response.statusCode, body)
		res.end(JSON.stringify(body));
	});
});
app.listen(8888);
console.log("port at 8888");     

  

如果在本地運行此nodejs的話,地址是127.0.0.1:8888/face/getFaceAttribute

請求方式是get

 

這個時候前端頁面只需要調用這個ajax地址就好了

$.ajax({
	type:"get",
	url:"http://127.0.0.1:8888/face/getFaceAttribute",//服務器我是部署在本地
	async:true,
	data:{'image_url':'www.yuanyizheng.com/fuzi.jpg'},
	success:function(data){
		console.log('success');
		console.log(data);
	},
	error:function(data){
		console.log('error')
		console.log(data);
	}
});

  

詳情請看

https://help.aliyun.com/knowledge_detail/53520.html

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM