opencv-python人脸识别(四)画方框与圆

画方框与圆:
 

import cv2# 默认读取格式为BGR
img = cv2.imread('face_text.jpg')
#图片显示
def cv_show(name,img):
    cv2.imshow(name,img)
    #等待时间,毫秒级,0表示任意键终止
    cv2.waitKey(0)#任意键终止cv2.waitKey(1000)为显示1000ms
    cv2.destroyAllWindows()
cv_show('size',img)
# 修改尺寸
resize = cv2.resize(img,dsize=(500,500))
cv_show('resize',resize)
# 绘制矩形,绘制圆形
x,y,w,h = 100,100,100,100
cv2.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=1)#图片,起始点,长宽高,颜色(b,g,r),宽度
cv2.circle(img,center=(x+w,y+h),radius=100,color=(255,0,0),thickness=2)
cv_show('re_img',img)

运行结果:

这里给你提供一个基于OpenCV和face_recognition库的Python人脸识别记录员工打卡信息的代码: ```python import cv2 import face_recognition import numpy as np import datetime # 加载已知员工的图片和姓名 known_face_encodings = [] known_face_names = [] image_paths = ['employee1.jpg', 'employee2.jpg', 'employee3.jpg'] for path in image_paths: image = face_recognition.load_image_file(path) face_encoding = face_recognition.face_encodings(image)[0] known_face_encodings.append(face_encoding) known_face_names.append(path.split(".")[0]) # 打开摄像头 video_capture = cv2.VideoCapture(0) while True: # 捕获一帧图像 ret, frame = video_capture.read() # 将RGB图像转换为BGR图像以适应OpenCV rgb_frame = frame[:, :, ::-1] # 查找当前帧中所有面部和面部编码 face_locations = face_recognition.face_locations(rgb_frame) face_encodings = face_recognition.face_encodings(rgb_frame, face_locations) # 在此帧中循环遍历每个人脸 for (top, right, bottom, left), face_encoding in zip(face_locations, face_encodings): # 看看面部是否与已知的面部相匹配 matches = face_recognition.compare_faces(known_face_encodings, face_encoding) # 如果找到了匹配项,则使用第一个匹配项的姓名作为名称 # 如果找不到匹配项,则使用“未知”作为名称 name = "Unknown" if True in matches: first_match_index = matches.index(True) name = known_face_names[first_match_index] # 在面部周围绘制一个方框 cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2) # 在面部下方绘制名称 cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255), cv2.FILLED) font = cv2.FONT_HERSHEY_SIMPLEX cv2.putText(frame, name, (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1) # 记录员工的打卡信息 if name != "Unknown": with open("attendance.txt", "a") as f: f.write(f"{name} {datetime.datetime.now()}\n") # 显示结果图像 cv2.imshow('Video', frame) # 按“Q”键退出循环 if cv2.waitKey(1) & 0xFF == ord('q'): break # 清理 video_capture.release() cv2.destroyAllWindows() ``` 上述代码首先加载已知员工的图片和姓名,然后打开摄像头进行实时人脸识别。如果找到的人脸与已知的人脸之一匹配,则在图像中标记出人脸并记录员工的打卡信息。最后,代码会在窗口中显示实时识别结果,按下“Q”键退出程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-chu_kuang-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值