题图 By Clm From Bing
基于大数据的人工智能越来越火,一些大的互联网公司把一些复杂的应用用webapi的形式暴露给开发者,开发者只需要调用这些接口就可以做一些有意思的事情了,但是这些大公司为了减轻服务器压力,有的时候需要二次开发。
百度云的面部识别接口就是这样一个应用,本篇文章就是带着大家用nodejs和百度云的SDK开发一个颜值测试接口,通俗的讲就是基于百度云面部识别接口的二次开发。
首先我们要注册一个百度账号,然后访问百度云的官网,不是百度云盘啊,大家看清楚啊,然后登陆控制台,选择产品服务的人脸识别,如图所示:
然后点击创建应用如图:
然后得到三个数据 appid appkey secrect key:
然后找到Nodejs的SDK文档
通过官网文档的代码如下:
通读这段代码,道理很简单,用上面新建应用得到的appid、appkey、secretkey,生成一个客户端,然后调用fs模块读取图片信息,将图片信息转成base64格式字符串,用客户端将base64格式的字符串传到百度云服务器解析,得到结果,但是这个结果没有颜值分数,我们再次阅读文档:
通读文档发现,分析图片时,需要传递一个参数,face_fields,参数值为beauty。
最终能够得到颜值信息的代码为:
现在我们就能用这个js文件读取照片的颜值信息了,只需要将代码中的图片地址改成你本地图片地址就可以了。但是只能本地读取,如何将其变成一个webapi呢?
我们需要用到express包。开发一个post接口,用户通过向这个接口提交图片,接口返回图片解析后得到的信息。但是用户上传图片还需要用到另外一个npm包formable,改造代码如下(按照mvc的标准模式):
index.js
router.js
controller.js
imageparser.js
以上便是开发一个可以通过图片是被图片中人物颜值的webapi。用postman向这个api发送一张图片看看会返回什么,用postman上传一张黎明的图片:
用postman上传图片时,格式要用form-data格式,
打印结果为:
beauty为66.6...不是很高啊,测了下刘德华73,当然不同图片得分还是不一样的,大家辩证来看,可以偷偷测测自己的照片,怎么说百度也是市值70多亿的大公司,接口还是可以的,笔者分数就不透露了,伤心啊..
快过年了,分享一些轻松好玩的东西给大家,提前祝大家新年愉快啊!!!分数不高可别像笔者一样把电脑砸了啊,不值当,要砸就砸百度。
项目代码地址:https://github.com/clm1100/newnodejsdemo/tree/master/%E7%99%BE%E5%BA%A6%E5%9B%BE%E7%89%87%E6%8E%A5%E5%8F%A3
有兴趣的可以玩一玩。
领取专属 10元无门槛券
私享最新 技术干货