python openCV调用摄像头进行人脸识别

小灰灰 2022-04-25 09:48 431阅读 0赞

整个过程很简单,因为不是自己训练人脸特征模型,而是使用的官方的Haar分类器(但是这样的话实测识别不是很准确)。

  1. 版本信息:
  2. python: 3.7
  3. cv2: 4.1.0

haar分类器下载

过程可以概括为:

1、调用电脑摄像头,并不断读取frame

2、对每一个读取到的frame,进行灰度处理

3、调用官方给出的人脸分类器文件haarcascade_frontalface_default.xml。(安装了openCV库以后可以使用everything工具搜索这个文件所在位置。)

4、设置参数并进行分类

5、使用cv2的矩形绘制工具绘制人脸框

6、显示绘制好框图的frame

7、设置捕获到输入q就退出

8、结束请理操作


虽然列出了这么多点操作步骤,但实际上代码行数很少,只有十来行。

  1. import cv2
  2. cap = cv2.VideoCapture(0)
  3. while(True):
  4. # Capture frame-by-frame
  5. ret, frame = cap.read()
  6. # Our operations on the frame come here
  7. gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
  8. xmlfile = r'C:\ProgramData\Anaconda3\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml'
  9. face_cascade = cv2.CascadeClassifier(xmlfile)
  10. faces = face_cascade.detectMultiScale(
  11. gray,
  12. scaleFactor=1.15,
  13. minNeighbors=5,
  14. minSize=(5, 5),
  15. )
  16. print("发现{0}个目标!".format(len(faces)))
  17. for (x, y, w, h) in faces:
  18. cv2.rectangle(frame, (x, y), (x + w, y + w), (0, 255, 0), 2)
  19. cv2.imshow("frame", frame)
  20. # Display the resulting frame
  21. if cv2.waitKey(1) & 0xFF == ord('q'):
  22. break
  23. # When everything done, release the capture
  24. cap.release()
  25. cv2.destroyAllWindows()

发表评论

表情:
评论列表 (有 0 条评论,431人围观)

还没有评论,来说两句吧...

相关阅读