Python人脸识别图像采集代码实战:基于OpenCV实现人脸检测与保存
Python人脸识别图像采集代码实战:基于OpenCV实现人脸检测与保存
本文将详细介绍使用Python和OpenCV库进行人脸图像采集的代码示例。代码演示了如何使用人脸检测器识别图像中的人脸,并提供了一个简单的界面,允许用户手动保存检测到的人脸图像。
代码示例
import cv2
cap = cv2.VideoCapture(0)
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # 加载检测器
color = (0, 255, 0)
num = 0
stop = False
while not stop:
success, img = cap.read()
gray = None
faces = face_cascade.detectMultiScale(img, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30),flags=cv2.CASCADE_SCALE_IMAGE)
for (x, y, w, h) in faces:
cv2.rectangle(img, (x-10, y-10), (x + w + 10, y + w + 10), (0, 255, 0), 2)
print('Detected', len(faces), "face")
label = 'Result: Detected ' + str(len(faces)) + " faces!"
cv2.putText(img, label, (10, 20), cv2.FONT_HERSHEY_COMPLEX, 0.8, (0, 0, 0), 1)
cv2.imshow('img', img)
k = cv2.waitKey(10) # 每0.1秒读一次键盘
if k == ord("z") or k == ord("Z"):
for (x, y, w, h) in faces:
num += 1
sub = img[y: y + h, x: x + w]
img_name = "8_%d.jpg" % num
image = cv2.resize(sub, (300, 400))
cv2.imwrite(img_name, image, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])
elif k & 0xFF == ord('q'): # 按下q程序结束
stop = True
cv2.destroyAllWindows() # 释放窗口
代码流程
- 导入OpenCV库和必要的模块。
- 创建一个视频捕获对象并加载人脸检测器。
- 在一个循环中,从视频流中读取帧,并检测其中的人脸。
- 如果检测到人脸,则在图像上绘制矩形框并显示检测到的人脸数量。
- 如果按下“z”键,则将人脸图像保存到本地。
- 如果按下“q”键,则退出程序并释放窗口。
代码说明
cv2.VideoCapture(0):创建视频捕获对象,从默认摄像头获取视频流。cv2.CascadeClassifier('haarcascade_frontalface_default.xml'):加载预训练的人脸检测器模型。face_cascade.detectMultiScale(img, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30),flags=cv2.CASCADE_SCALE_IMAGE):使用人脸检测器检测图像中的人脸。cv2.rectangle(img, (x-10, y-10), (x + w + 10, y + w + 10), (0, 255, 0), 2):在检测到的人脸区域绘制矩形框。cv2.imwrite(img_name, image, [int(cv2.IMWRITE_PNG_COMPRESSION), 9]):将检测到的人脸图像保存到本地。
总结
本文提供了一个简单的Python代码示例,演示了如何使用OpenCV进行人脸图像采集。该代码可以作为基础,用于开发更复杂的应用程序,例如人脸识别系统。
**注意:**为了运行代码,您需要安装OpenCV库。可以使用pip install opencv-python命令进行安装。
原文地址: https://www.cveoy.top/t/topic/jC1d 著作权归作者所有。请勿转载和采集!