1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > python实现人脸检测及识别(1)---- 采集人脸数据

python实现人脸检测及识别(1)---- 采集人脸数据

时间:2022-04-05 12:17:03

相关推荐

python实现人脸检测及识别(1)----  采集人脸数据

本次项目是采用keras深度学习框架,训练人脸识别模型,采用opencv实时检测与识别周围的人脸,本文主要讲解如何采集训练集,本次代码在人脸识别的代码上添加了将识别的照片依次写入指定文件夹,并命名(000-499).jpg和显示识别的第N张照片的文本显示。

代码如下:

# -*- coding:utf-8 -*-import cv2def CatchPicture(window_name, catch_pic_num, path_name):cv2.namedWindow(window_name)cap = cv2.VideoCapture(0)cascade_path = "haarcascade_frontalface_default.xml"num = 0while True:ok, frame = cap.read()if not ok:breakframe_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)cascade = cv2.CascadeClassifier(cascade_path)#识别出人脸数量facerect = cascade.detectMultiScale(frame_gray, scaleFactor=1.2, minNeighbors=3, minSize=(12, 12))if len(facerect) > 0:print('face detected')color = (255, 255, 255) # 白for rect in facerect:x, y, w, h = rectimg_name = '%s/%d.jpg' % (path_name, num)image = frame[y - 10: y + h + 10, x - 10: x + w + 10]cv2.imwrite(img_name, image) # 照片写入到文件num += 1if num > (catch_pic_num): # 如果超过指定最大保存数量退出循环break# 画出矩形框cv2.rectangle(frame, (x - 10, y - 10), (x + w + 10, y + h + 10), color, 2)# 显示当前捕捉到了多少人脸图片了font = cv2.FONT_HERSHEY_SIMPLEXcv2.putText(frame, 'num:%d' % (num), (x + 30, y + 30), font, 1, (0, 255, 0), 2)# 超过指定最大保存数量结束程序if num > (catch_pic_num): break# 显示图像cv2.imshow(window_name, frame)c = cv2.waitKey(15)if c & 0xFF == ord('q'):breakcap.release()cv2.destroyAllWindows()if __name__ == '__main__':CatchPicture("截取人脸",500,'./data/boss')

运行完后,500张照片存到同路径的“/data/boss”文件夹,然后再采集一组存到“data/other”,同样采集500张作为训练数据,以提高模型的识别精度接下来的训练程序将以文件夹作为标签数据区分个人。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。