当前位置:脚本大全 > > 正文

如何用python人脸识别(Python学习笔记之视频人脸检测识别实例教程)

时间:2022-01-17 01:41:17类别:脚本大全

如何用python人脸识别

Python学习笔记之视频人脸检测识别实例教程

前言

上一篇博文与大家分享了简单的图片人脸识别技术,其实在实际应用中,很多是通过视频流的方式进行识别,比如人脸识别通道门禁考勤系统、人脸动态跟踪识别系统等等。

下面话不多说了,来一起看看详细的介绍吧

案例

这里我们还是使用 opencv 中自带了 haar人脸特征分类器,通过读取一段视频来识别其中的人脸。

代码实现:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • # -*- coding: utf-8 -*-
  • __author__ = "小柒"
  • __blog__ = "https://blog.52itstyle.vip/"
  • import cv2
  • import os
  •  
  •  
  • # 保存好的视频检测人脸并截图
  • def catchpicfromvideo(window_name, camera_idx, catch_pic_num, path_name):
  •  cv2.namedwindow(window_name)
  •  
  •  # 视频来源
  •  cap = cv2.videocapture(camera_idx)
  •  
  •  # 告诉opencv使用人脸识别分类器
  •  classfier = cv2.cascadeclassifier(os.getcwd()+"\\haarcascade\\haarcascade_frontalface_alt.xml")
  •  
  •  # 识别出人脸后要画的边框的颜色,rgb格式, color是一个不可增删的数组
  •  color = (0, 255, 0)
  •  
  •  num = 0
  •  while cap.isopened():
  •  ok, frame = cap.read() # 读取一帧数据
  •  if not ok:
  •   break
  •  
  •  grey = cv2.cvtcolor(frame, cv2.color_bgr2gray) # 将当前桢图像转换成灰度图像
  •  
  •  # 人脸检测,1.2和2分别为图片缩放比例和需要检测的有效点数
  •  facerects = classfier.detectmultiscale(grey, scalefactor=1.2, minneighbors=3, minsize=(32, 32))
  •  if len(facerects) > 0: # 大于0则检测到人脸
  •   for facerect in facerects: # 单独框出每一张人脸
  •   x, y, w, h = facerect
  •  
  •   # 将当前帧保存为图片
  •   img_name = "%s/%d.jpg" alt="如何用python人脸识别(Python学习笔记之视频人脸检测识别实例教程)" border="0" /> % (path_name, num)
  •   # print(img_name)
  •   image = frame[y - 10: y + h + 10, x - 10: x + w + 10]
  •   cv2.imwrite(img_name, image, [int(cv2.imwrite.jpg" alt="如何用python人脸识别(Python学习笔记之视频人脸检测识别实例教程)" border="0" />9])
  •  
  •   num += 1
  •   if num > (catch_pic_num): # 如果超过指定最大保存数量退出循环
  •    break
  •  
  •   # 画出矩形框
  •   cv2.rectangle(frame, (x - 10, y - 10), (x + w + 10, y + h + 10), color, 2)
  •  
  •   # 显示当前捕捉到了多少人脸图片了,这样站在那里被拍摄时心里有个数,不用两眼一抹黑傻等着
  •   font = cv2.font_hershey_simplex
  •   cv2.puttext(frame, 'num:%d/100' % (num), (x + 30, y + 30), font, 1, (255, 0, 255), 4)
  •  
  •   # 超过指定最大保存数量结束程序
  •  if num > (catch_pic_num): break
  •  
  •  # 显示图像
  •  cv2.imshow(window_name, frame)
  •  c = cv2.waitkey(10)
  •  if c & 0xff == ord('q'):
  •   break
  •  
  •   # 释放摄像头并销毁所有窗口
  •  cap.release()
  •  cv2.destroyallwindows()
  •  
  •  
  • if __name__ == '__main__':
  •  # 连续截100张图像
  •  catchpicfromvideo("get face", os.getcwd()+"\\video\\kelake.mp4", 100, "e:\\videocapture")
  • 动图有点花,讲究着看吧:

    如何用python人脸识别(Python学习笔记之视频人脸检测识别实例教程)

    如果是捕捉摄像头,只需要改变以下代码即可:

  • ?
  • 1
  • 2
  • # 如果获取摄像头,参数修改为 0 即可
  • cap = cv2.videocapture(0)
  • 源码

    https://gitee.com/52itstyle/python/tree/master/day09

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对开心学习网的支持。

    原文链接:https://blog.52itstyle.vip/archives/3794/

    上一篇下一篇

    猜您喜欢

    热门推荐