做和别人一样的网站,微信开放平台怎么解除绑定,虚拟主机哪里好,网站开发专业能力效果#xff1a;
使用Python的cv2库和face_recognition库来进行人脸检测和比对的 0是代表一样 认为是同一人。
代码#xff1a;
pip install opencv-python
pip install face_recognition# 导入cv2库#xff0c;用于图像处理
import cv2
# 导入face_recognition库#…效果
使用Python的cv2库和face_recognition库来进行人脸检测和比对的 0是代表一样 认为是同一人。
代码
pip install opencv-python
pip install face_recognition# 导入cv2库用于图像处理
import cv2
# 导入face_recognition库用于人脸识别
import face_recognition# 使用face_recognition库加载名为face1.jpeg的图片并存储在reference_image变量中
reference_image face_recognition.load_image_file(face1.jpeg)
# 使用cv2库将BGR彩色图像转化为RGB彩色图像因为face_recognition库需要RGB格式的图像
reference_image cv2.cvtColor(reference_image, cv2.COLOR_BGR2RGB)# 同样地加载另一张名为face3.jpg的图片并存储在test_image变量中
test_image face_recognition.load_image_file(face3.jpg)
# 也将其从BGR格式转化为RGB格式
test_image cv2.cvtColor(test_image, cv2.COLOR_BGR2RGB)# 使用face_recognition库定位reference_image图片中的人脸位置返回的是一个列表其中每个元素代表一个人脸的位置
# 这里我们假设只有一个人脸所以直接取第一个元素
reference_face_location face_recognition.face_locations(reference_image)[0]
# 提取reference_image图片中人脸的面部特征返回一个列表每个元素代表一个人脸的特征编码
# 同样地我们假设只有一个人脸所以直接取第一个元素
reference_face_encoding face_recognition.face_encodings(reference_image)[0]# 在reference_image图片上框出人脸位置使用紫色矩形框表示
cv2.rectangle(reference_image, (reference_face_location[3], reference_face_location[0]),(reference_face_location[1], reference_face_location[2]), (255, 0, 255), 2)# 对另一张图片test_image也做同样的人脸定位和特征提取操作
test_face_location face_recognition.face_locations(test_image)[0]
test_face_encoding face_recognition.face_encodings(test_image)[0]
# 在test_image图片上也框出人脸位置
cv2.rectangle(test_image, (test_face_location[3], test_face_location[0]),(test_face_location[1], test_face_location[2]), (255, 0, 255), 2)# 使用face_recognition库比较两个人脸的相似度返回一个布尔值列表表示每张测试图片是否与已知人脸匹配
# 这里我们只有一个测试人脸和一个已知人脸所以直接取列表的第一个元素作为结果
is_same_person face_recognition.compare_faces([reference_face_encoding], test_face_encoding)[0]
# 计算两个人脸的欧氏距离返回一个浮点数列表表示每张测试图片与已知人脸的距离
# 同样地我们直接取第一个元素作为结果
euclidean_distance face_recognition.face_distance([reference_face_encoding], test_face_encoding)[0]# 打印相似度结果和欧氏距离
print(is_same_person, euclidean_distance)
# 在test_image图片上显示比对结果包括相似度True或False和欧氏距离保留两位小数
cv2.putText(test_image, f{is_same_person}{round(euclidean_distance, 2)}, (50, 50), cv2.FONT_HERSHEY_COMPLEX, 1,(0, 0, 255), 2)# 使用cv2库的imshow函数显示两张图片分别命名为Driver和Operator
cv2.imshow(Driver, reference_image)
cv2.imshow(Operator, test_image)# 等待用户按键操作参数0表示无限等待直到用户按下一个键
key cv2.waitKey(0)
# 如果用户按下的是ESC键ASCII码为27则关闭所有打开的窗口
if key 27:cv2.destroyAllWindows()