自己使用原生php做网站性能,江苏省建设主管部门网站,专业制作门户型网站,网站的v2信誉认证怎么做之前我们获取了一张图像的人脸信息#xff0c;现在我们来使用特征点分析来匹配两张lyf照片的相似度 获取两张图片的人脸信息
import cv2
import face_recognition# 加载图像文件
img1 face_recognition.load_image_file(lyf1.png)
img2 face_recognition.load_image_file(l… 之前我们获取了一张图像的人脸信息现在我们来使用特征点分析来匹配两张lyf照片的相似度 获取两张图片的人脸信息
import cv2
import face_recognition# 加载图像文件
img1 face_recognition.load_image_file(lyf1.png)
img2 face_recognition.load_image_file(lyf2.png)
# 将图像从 BGR 格式转换为 RGB 格式
img1 cv2.cvtColor(img1, cv2.COLOR_BGR2RGB)
img2 cv2.cvtColor(img2, cv2.COLOR_BGR2RGB)
# 第一个人的人脸位置信息
faceloc1 face_recognition.face_locations(img1)[0]
faceloc2 face_recognition.face_locations(img2)[0]
#框出人脸
cv2.rectangle(img1, (faceloc1[3], faceloc1[0]), (faceloc1[1], faceloc1[2]), (0, 255, 0), 3)
cv2.rectangle(img2, (faceloc2[3], faceloc2[0]), (faceloc2[1], faceloc2[2]), (0, 255, 0), 3)#打印人脸位置信息
print(faceloc1)
print(faceloc2)cv2.imshow(lyf1, img1)
cv2.imshow(lyf2, img2)
cv2.waitKey(0)效果如下 然后接下来我们使用face_encodings来进行提取人脸特征编码首先我们先对这个函数进行一下介绍
face_encodings函数 face_recognition.face_encodings() 是 face_recognition 库中的一个函数用于从图像中提取人脸的特征编码。这些编码是对人脸图像的数值化描述可以用来比较不同人脸之间的相似度从而进行人脸识别或验证。 face_encodings(face_image, known_face_locationsNone, num_jitters1) face_image: 必须是一个RGB图像numpy数组即使是从OpenCV加载的图像也需要先转换为RGB格式。 known_face_locations: 可选参数指定人脸位置的列表。每个位置是一个包含四个整数的元组 (top, right, bottom, left)代表人脸框的坐标。如果不提供此参数函数将自动检测图像中的所有人脸。 num_jitters: 可选参数默认为1。用于增加对每个人脸提取特征时的采样次数以获得更稳定的编码。较大的值可能会提高准确性但会增加计算成本。 返回值 该函数返回一个包含每个检测到的人脸编码的列表。每个编码是一个128维的numpy数组描述了人脸在128维空间中的位置关系和特征。 face_recognition.face_encodings() 可以结合 face_recognition.face_locations() 使用以便首先检测人脸位置然后提取这些位置上的人脸编码。 人脸编码是一个具有良好特性的向量可以用于比较两张人脸图像的相似度。通常人脸编码越相似它们之间的距离如欧氏距离越小。 该函数在进行人脸识别、人脸验证和人脸聚类等任务时非常有用。 这样我们使用faceloc1 face_recognition.face_locations(img1)[0]
face_encoding1 face_recognition.face_encodings(img1, [faceloc1])[0]
这里就表示获取第一个人脸的特征编码
img1 face_recognition.load_image_file(lyf1.png)
img2 face_recognition.load_image_file(lyf2.png)
# 将图像从 BGR 格式转换为 RGB 格式
img1 cv2.cvtColor(img1, cv2.COLOR_BGR2RGB)
img2 cv2.cvtColor(img2, cv2.COLOR_BGR2RGB)
# 第一个人的人脸位置信息
faceloc1 face_recognition.face_locations(img1)[0]
faceloc2 face_recognition.face_locations(img2)[0]
# 提取人脸编码
face_encoding1 face_recognition.face_encodings(img1, [faceloc1])[0]
face_encoding2 face_recognition.face_encodings(img2, [faceloc2])[0]下面我们使用compare_faces来对比两个图片人脸的相似度介绍一下这个函数
compare_faces函数 face_recognition.compare_faces([face_encoding1], face_encoding2) 是一个用于人脸比对的函数通常用于人脸识别任务中。这个函数接受两个参数 face_encoding1: 表示第一个人脸的编码通常是一个128维的向量用于表示人脸的特征。face_encoding2: 表示第二个人脸的编码同样是一个128维的向量。 函数的作用是比较这两个人脸编码判断它们是否来自同一个人脸。具体来说它会计算这两个人脸编码之间的欧氏距离Euclidean distance如果距离小于一个阈值一般来说是0.6就认为这两个人脸是同一个人返回True否则返回False。 import cv2
import face_recognition# 加载图像文件
img1 face_recognition.load_image_file(lyf1.png)
img2 face_recognition.load_image_file(lyf2.png)
# 将图像从 BGR 格式转换为 RGB 格式
img1 cv2.cvtColor(img1, cv2.COLOR_BGR2RGB)
img2 cv2.cvtColor(img2, cv2.COLOR_BGR2RGB)
# 第一个人的人脸位置信息
faceloc1 face_recognition.face_locations(img1)[0]
faceloc2 face_recognition.face_locations(img2)[0]
# 提取人脸编码
face_encoding1 face_recognition.face_encodings(img1, [faceloc1])[0]
face_encoding2 face_recognition.face_encodings(img2, [faceloc2])[0]
#框出人脸
cv2.rectangle(img1, (faceloc1[3], faceloc1[0]), (faceloc1[1], faceloc1[2]), (0, 255, 0), 3)
cv2.rectangle(img2, (faceloc2[3], faceloc2[0]), (faceloc2[1], faceloc2[2]), (0, 255, 0), 3)
#比对人脸特征
res face_recognition.compare_faces([face_encoding1],face_encoding2)
print(res)
#打印人脸位置信息
# print(faceloc1)
# print(faceloc2)cv2.imshow(lyf1, img1)
cv2.imshow(lyf2, img2)
cv2.waitKey(0)效果如下 这里可以看见打印了True,说明为同一个人
到这里就完成了对两个人脸的比对感兴趣的可以关注一下谢谢