如何使用Python实现摄像头实时人脸检测并收集数据?
- 内容介绍
- 文章标签
- 相关推荐
本文共计616个文字,预计阅读时间需要3分钟。
如何使用摄像头保存人脸?基于OpenCV进行人脸识别数据收集,我对本人自行进行数据收集,具体请看代码注释,写得很详细了,按s保存图片为test.jpg,按q则退出界面:
pythonimport cv2
初始化摄像头cap=cv2.VideoCapture(0)
while True: # 读取摄像头帧 ret, frame=cap.read() if not ret: break
# 在帧上显示人脸 gray=cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) faces=cv2.CascadeClassifier('haarcascade_frontalface_default.xml').detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces: cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)
# 显示帧 cv2.imshow('Face Detection', frame)
# 按's'保存图片 if cv2.waitKey(1) & 0xFF==ord('s'): cv2.imwrite('test.jpg', frame)
# 按'q'退出 if cv2.waitKey(1) & 0xFF==ord('q'): break
释放摄像头cap.release()cv2.destroyAllWindows()
如何使用摄像头保存人脸?
基于opencv进行人脸识别数据收集,我对本人自己进行数据收集,具体请看代码注释,写很详细了,按s就保存图片为test.jpg,按q则退出界面:
代码如下:
import cv2cap = cv2.VideoCapture(0) #摄像头开启,也可以传入mp4
# 相机的默认帧大小在Windows或Ubuntu中将为640x480
# cap.isOpened() 返回 true/false, 检查摄像头初始化是否成功
print(cap.isOpened())
while cap.isOpened():
ret_flag, img_camera = cap.read()
cv2.imshow("camera", img_camera)
# 每帧数据延时 1ms, 延时为0, 读取的是静态帧
k = cv2.waitKey(1)
# 按下 's' 保存截图
if k == ord('s'):
cv2.imwrite("test.jpg", img_camera)
# 按下 'q' 退出
if k == ord('q'):
break
# 释放所有摄像头
cap.release()
# 删除建立的所有窗口
cv2.destroyAllWindows()
演示效果:
人脸注册录入
首先我们是基于
识别模型:基于Dlib的 ResNet预训练模型dlib_face_recognition_resnet_model_v1.dat
识别算法:ResNet 神经网络。
人脸识别需要将 提取到的图像数据 和 已有图像数据 进行比对分析,才能判断出是否为本人,所以这里主要是做更方便的数据收集.
使用方式:
“n” 新录入人脸,新建文件夹 person_X/ 用来存储某人的人脸图像"s" 开始捕获人脸,将捕获到的人脸放到 person_X/ 路径下
“q” 退出窗口
n创建文件夹后,按几次s收集自己的人脸数据:
可以实现多个人的录入,每一个人单独创建一个文件夹。
本文共计616个文字,预计阅读时间需要3分钟。
如何使用摄像头保存人脸?基于OpenCV进行人脸识别数据收集,我对本人自行进行数据收集,具体请看代码注释,写得很详细了,按s保存图片为test.jpg,按q则退出界面:
pythonimport cv2
初始化摄像头cap=cv2.VideoCapture(0)
while True: # 读取摄像头帧 ret, frame=cap.read() if not ret: break
# 在帧上显示人脸 gray=cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) faces=cv2.CascadeClassifier('haarcascade_frontalface_default.xml').detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces: cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)
# 显示帧 cv2.imshow('Face Detection', frame)
# 按's'保存图片 if cv2.waitKey(1) & 0xFF==ord('s'): cv2.imwrite('test.jpg', frame)
# 按'q'退出 if cv2.waitKey(1) & 0xFF==ord('q'): break
释放摄像头cap.release()cv2.destroyAllWindows()
如何使用摄像头保存人脸?
基于opencv进行人脸识别数据收集,我对本人自己进行数据收集,具体请看代码注释,写很详细了,按s就保存图片为test.jpg,按q则退出界面:
代码如下:
import cv2cap = cv2.VideoCapture(0) #摄像头开启,也可以传入mp4
# 相机的默认帧大小在Windows或Ubuntu中将为640x480
# cap.isOpened() 返回 true/false, 检查摄像头初始化是否成功
print(cap.isOpened())
while cap.isOpened():
ret_flag, img_camera = cap.read()
cv2.imshow("camera", img_camera)
# 每帧数据延时 1ms, 延时为0, 读取的是静态帧
k = cv2.waitKey(1)
# 按下 's' 保存截图
if k == ord('s'):
cv2.imwrite("test.jpg", img_camera)
# 按下 'q' 退出
if k == ord('q'):
break
# 释放所有摄像头
cap.release()
# 删除建立的所有窗口
cv2.destroyAllWindows()
演示效果:
人脸注册录入
首先我们是基于
识别模型:基于Dlib的 ResNet预训练模型dlib_face_recognition_resnet_model_v1.dat
识别算法:ResNet 神经网络。
人脸识别需要将 提取到的图像数据 和 已有图像数据 进行比对分析,才能判断出是否为本人,所以这里主要是做更方便的数据收集.
使用方式:
“n” 新录入人脸,新建文件夹 person_X/ 用来存储某人的人脸图像"s" 开始捕获人脸,将捕获到的人脸放到 person_X/ 路径下
“q” 退出窗口
n创建文件夹后,按几次s收集自己的人脸数据:
可以实现多个人的录入,每一个人单独创建一个文件夹。

