当前位置: 首页 > news >正文

python --face_recognition(人脸识别,检测,标题,特征提取)

dlib 安装方法 之前博文 https://blog.csdn.net/weixin_44634704/article/details/141332644

环境:

python==3.8
opencv-python==4.11.0.86
face_recognition==1.3.0
dlib==19.24.6

人脸检测

import cv2
import face_recognition

# 读取人脸图片
img = cv2.imread(r"C:\Users\123\Desktop\1.jpg")
face_List = face_recognition.face_locations(img) # 检测人脸,返回人脸坐标信息
print(face_List)

for x in face_List: # 画框
    cv2.rectangle(img, (x[3], x[0]), (x[1], x[2]), (0, 255, 0), 2)
cv2.imshow("a", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 输出: [(116, 306, 223, 199)]

在这里插入图片描述

人脸分割(切割)

import cv2
import face_recognition

# 读取人脸图片
img = cv2.imread(r"C:\Users\123\Desktop\1.jpg")
face_List = face_recognition.face_locations(img) # 检测人脸,返回人脸坐标信息
print(face_List)

for x in face_List: # 画框
    cv2.rectangle(img, (x[3], x[0]), (x[1], x[2]), (0, 255, 0), 2)
    qie_img = img[x[0]:x[2], x[3]:x[1]]
    
cv2.imshow("a", qie_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

提取人脸特征向量

img = cv2.imread(r"C:\Users\123\Desktop\1.jpg")
# 提取人脸特征向量
face01 = face_recognition.face_encodings(img)[0]
print(face01)

人脸比对

import cv2
import face_recognition
import numpy as np

# 读取人脸图片
img = cv2.imread(r"C:\Users\123\Desktop\1.jpg")
# 提取人脸特征向量
face01 = face_recognition.face_encodings(img)[0]
# 读取人脸原图的图片
img2 = cv2.imread(r"C:\Users\123\Desktop\1.jpg")
face02 = face_recognition.face_encodings(img2)[0]
#
# 计算欧几里得距离
v = np.linalg.norm(face01 - face02)
if v < 0.8:
    print("是一个人")
else:
    print("不是一个人")

转为置信度

import cv2
import face_recognition
import numpy as np

def euclidean_distance_to_confidence(distance, max_distance):
    # 确保距离在合理范围内
    distance = min(distance, max_distance)
    # 计算置信度
    confidence = 1 - (distance / max_distance)
    return confidence

# 读取人脸图片
img = cv2.imread(r"C:\Users\123\Desktop\1.jpg")
# 提取人脸特征向量
face01 = face_recognition.face_encodings(img)[0]
# 读取人脸原图的图片
img2 = cv2.imread(r"C:\Users\123\Desktop\1.jpg")
face02 = face_recognition.face_encodings(img2)[0]
#
# 计算欧几里得距离
v = np.linalg.norm(face01 - face02)
w = euclidean_distance_to_confidence(v, 1) # 置信度最大阈值为1
print(w)

相关文章:

  • C++指针基础与应用详解
  • JAVA 中的 ArrayList 工作原理
  • 鸿蒙开发新利器(二):媒体查询方法封装全解析
  • RabbitMQ 详细原理解析
  • 蓝桥杯备考:学会使用方向向量
  • 计算机三级Linux应用与开发技术(最终版了)
  • 【线程安全的单例模式和STL是否是线程安全/智能指针是否是线程安全】
  • AXIOM —— 介绍
  • ai-by-hand-excel: 用 Excel 手搓各种 AI 算法和模型
  • CSS3:深度解析与实战应用
  • 2.5.3 windows编程iocp
  • 【MATLAB例程】交互式多模型(IMM),模型使用:CV,CT左转、CT右转,二维平面,三个模型的IMM,滤波使用EKF。订阅专栏后可查看代码
  • MD2Card(markdown)
  • 打字时候选如何向后翻页?
  • 前端使用vue,一个项目从零开始开发大概构思
  • 【新能源汽车温度采集与控制系统设计深度解析】
  • 2.3 高阶导数
  • 玩转python: 掌握Python常用库之数据分析pandas
  • 【第二月_day7】Pandas 简介与数据结构_Pandas_ day1
  • kafka删除/创建 topic报错,如何解决
  • 《水饺皇后》领跑五一档票房,《哪吒2》上座率仍居第一
  • 迪卡侬回应出售中国业务30%股份传闻:始终扎根中国长期发展
  • 电话费被私改成48元套餐长达数年,投诉后移动公司退补600元话费
  • 俄宣布停火三天,外交部:希望各方继续通过对话谈判解决危机
  • 上海74岁老人宜春旅游时救起落水儿童,“小孩在挣扎容不得多想”
  • 商务部新闻发言人就波音公司飞回拟交付飞机答记者问