浅用百度人脸检测SDK
前言
上信息课的时候提到了百度的人脸检测的SDK并且有个附加作业是要识别图像的性别并用不同颜色的框表示,本来上课一直摸鱼一个字都不听的我当场就不困了,直接开搞
准备
安装依赖
因为要用百度的SDK所以先安装一下百度的包
1 | pip intsall baidu-aip |
为了画框还要安装pillow
1 | pip intsall pillow |
申请API_KEY
进入百度智能云的控制台,在左侧菜单产品服务里找到人脸识别,进入板块后创建应用即可,注意要个人实名认证领取免费额度,不然没额度也没法检测
代码编写
库
首先需要import
一下需要用到的库
1 | from turtle import width |
图像预处理
百度要求以base64传入图片,所以需要对图片进行预处理变为base64编码
1 | filepath = "01.webp" |
设置密钥
注意保存刚刚申请的密钥,调用会方便一点
1 | APP_ID = '*****' |
初始化
引入刚才保存的密钥
1 | aipFace = AipFace(APP_ID, API_KEY, SECRET_KEY) |
然后需要设定一下可选的参数,详细的接口文档在这里
我这里选用了需要的设定,一个是face_field
里的gender
选项用来取得所识别出来的性别,同时要设定max_face_num
来确定识别的最大人数
1 | options = {} |
调用
非常简单,一行代码
1 | result = aipFace.detect(image, imageType, options) |
数据读取
返回的数据是以是一串多维数组,里面的数据类似于这样
1 |
|
我们建几个空数组来存这些数据
1 | genders={} |
接下来就是存数据了,写一个循环,循环里主要就是把result
里的数据向不同的数组里存,所以用result['result']['face_list']['人脸编号']
来读取不同人脸对应的数据,在后面继续加上['location']['方向']
可以获得人脸的边界,加上['gender']['type']
获取性别
画图
常规操作,把图片打开
1 | im=Image.open("01.webp") |
后面再接一个循环,因为要求不同性别用不同的颜色的框,所以循环里要加上性别的判断
1 | for i in range(2): |
最后保存图片
1 | im.save("output.png","PNG") |
大功告成
效果
找不到啥可以用的图,所以用松冈和爱衣的合照试一下 运行前
运行后:
问题
第一次运行的时候报错ModuleNotFoundError: No module named 'chardet'
我才发现没装chardet
库,pip install
一下即可
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自zBlog
评论