北京志远天辰科技有限公司-旗下
首页 » 新闻快递 » 实现人脸截图保存并编写128维特征向量

实现人脸截图保存并编写128维特征向量

作者:钉钉硬件分类: 新闻快递 时间:2022-2-14 16:13浏览:502次

前情概要

经过上一篇咱们就可以对图片中的人脸进行辨认,这篇文章就来教我们怎样对人脸部分进行截取保存。而且将图片中的每张人脸编码成一个128维长度的向量,经过这个后续能在人脸之间进行比对。

PIL导入

由于咱们需要进行切开和保存一切我这里使用了PIL库进行,Python图画库PIL(Python Image Library)是python的第三方图画处理库,但是由于其强大的功用与众多的使用人数,几乎已经被认为是python官方图画处理库了。其官方主页为:PIL。 PIL历史悠久,原来是只支持python2.x的版别的,后来呈现了移植到python3的库pillow,pillow号称是friendly fork for PIL,其功用和PIL差不多,但是支持python3。conda环境中只需activate "你所使用的环境" 然后 conda install pillow 即可,python默许环境中只需pip install pillow ,或是都可经过pycharm查找pillow进行下载

人脸编码函数——face_encodings

face_encodings( face_image , known_face_locations=None , num_jitters=1 ) 给定一个图画,返回图画中每个人脸的128脸部编码(特征向量)。 参数: face_image : 输入的人脸图画 known_face_locations : 可选参数,如果你知道每个人脸地点的鸿沟框 num_jitters=1 : 在计算编码时要从头采样的次数。越高越精确,但速度越慢(100就会慢100倍)
返回值: 一个128维的脸部编码列表,返回值类型为:List[Dict[str,List[Tuple[Any,Any]]]],是由各个脸部特征要害点方位组成的字典记载 列表,一个Dict目标对应图片中的一个人脸,其key为某个脸部特征: 如输出中的nose_bridge、left_eye等,value是由该脸部特征各个要害点方位组成的List,要害点方位是一个Tuple。

切开

而咱们想要对人脸部分实现截图保存只需要经过上篇文章中face_locations函数定位到人脸部分时进行切开即可我用到的是Image.crop()办法进行切开。详细代码如下(有详细解说,嘿嘿)

详细代码

Main

import face_recognition from PIL import Image import Test3 # 导入Test3 '''
图片中人脸截图保存
''' img = Image.open("2.png")
image = face_recognition.load_image_file("2.png")
face_locations = face_recognition.face_locations(image) # 参数(top, right, bottom, left) 上右角 下左角 for i in range(len(face_locations)):
    top, right, bottom, left = face_locations[i]
    region = img.crop((left, top, right, bottom)) # 参数(left, upper, right, lower)  左上角  右下角 进行切开 region.save(str(i)+"_.jpg") # 保存  region.show() # 展现 Test3.demoFunc("2.png") #  调用Test3中的demoFunc()办法

Test3

import face_recognition def demoFunc(path): '''
    将图片中的每张人脸编码成一个128维长度的向量
    ''' image = face_recognition.load_image_file(path)
    face_encodings = face_recognition.face_encodings(image) #将单个人脸数据转化为一个128维的向量 for i in face_encodings:
        print("i:", i)

结果展现

又到了激动人心的展现时刻了
128维向量
嘿嘿大头照

总结

人脸辨认第二期结束,如果我们觉得还不错有所协助的话可以点点小赞哈哈,我们一起努力进步!