用Pycharm+face_recognition来标志一张图片中的多张人脸

如何用pycharm和face_recognition来识别一张图片中的多张人脸,并且将其标志出来

博主之前在做python课程设计的时候,想做一个人脸识别的入门教程,于是自己网上找了些资料,发现用Python加上face_recognition来做人脸识别,非常简单就能实现一些人脸识别常用的功能,例如标志处图片中的每张人脸下面这样:
在这里插入图片描述

要实现上面这个功能其实很简单,但首先你要装好face_recognition库,具体安装方法可以自行百度,下面讲讲实现步骤:

开始前的准备工作:
将你要识别的图片放到你pycharm目前的工作目录中

1. 首先肯定要先导入要使用的库

import face_recognition

from PIL import Image, ImageDraw

导入Image和ImageDraw是为了方便在已识别的人脸上画出标志框

2.导入图片,对图片中人脸上的面部特征位置进行定位,并获取人脸的数目

#将图像载入的一个numpy array类型上,函数括号内填你的目标图片文件名
image = face_recognition.load_image_file('alot.jpg')

#给定一个图像,返回图像中每个人脸的面部特征位置(眼睛、鼻子等),返回值是一个元组列表,列表中的每个元组包含每张人脸的人脸位置——(top, right, bottom, left)
locations = face_recognition.face_locations(image)

#用一个变量保存人脸数目
a=len(locations)

3.对图片中的每张人脸进行标志画框

#循环的次数就是人脸的个数,for循环作用相当于在上一次标志人脸的图片上标志下一张人脸
for i in range(0, a):
    
    #由于每次循环只能标志一张人脸,所以要重复载入上次保存的图片
    image = face_recognition.load_image_file('alot.jpg')
   
    #对第i张人脸进行标志
    pos = locations[i]
   
    #要想在指定图片上绘制图像,要先将指定图片转换为一个可绘制对象
    #首先将要进行绘图的图像转换为array
    pil_image = Image.fromarray(image)
    #再用ImageDraw模块的一个函数—Draw,创建一个给定图像上绘图的对象
    d = ImageDraw.Draw(pil_image, 'RGBA')
    
    #rectangle是ImageDraw的一个成员方法,作用是在图像的指定位置绘制一个长方形,前两个表示一个坐标,后两个表示一个坐标
    #坐标(pos[3],pos[0])表示人脸的左上角,坐标(pos[1],pos[2])表示人脸的右下角
    d.rectangle((pos[3], pos[0], pos[1], pos[2]))
    
    #每次标志完人脸后要保存
    pil_image.save("alot.jpg")
#将已经标志好人脸的图片展示在屏幕前
pil_image.show( )

通过上述代码就可标志一张图片上的多张人脸,但是用到的是for循环,而且每次循环都要保存和载入图片,如果人脸数目过多的话,运行速度势必会变慢,不知道大家有什么更好的方法,欢迎在评论区说出你的想法~

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值