基于Python OpenCV 的视频人脸检测

基于Python OpenCV 的视频人脸检测

周末在家,捣鼓树莓派,使用摄像头的时候,突然想到可以做个人脸检测。其实视频和图像的检测是基本相同的。就挑战一下视频吧。

就先在windows 实验一下吧:
安装 Python,OpenCV。。。。 关于这一步,网络教程一大堆,大家自行检索,在此就不赘述了。 不过还是推荐大家使用 Anaconda 。(URL:https://www.anaconda.com/download/) OpenCV的安装包也分享一下吧(URL: 链接:http://pan.baidu.com/s/1cuChXG 密码:yl62)。

好啦,环境什么的都搭建好啦。就离胜利更近一步了。
提示:在 opencv根目录\sources\data\haarcascades中提供了很多训练好的分类器,我们使用haarcascade_frontalface_alt.xml分类器。

首先是导入我们的 modules;

import cv2
import sys

调用摄像头使用cv2.VideoCapture(0)命令。
然后 导入 OpenCV 提供的分类器:

cascPath="opencv根目录/sources/data/haarcascades/haarcascade_frontalface_alt2.xml"
faceCascade = cv2.CascadeClassifier(cascPath)

下一步就创建个循环,在循环内实现识别检测。最后,循环外关闭所有窗口和数据:

while True:
     xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
     xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

# Have fun
video_capture.release()
cv2.destroyAllWindows()

最后,就是在循环内补充检测部分的代码了。

ret, img = video_capture.read()
faceRects = faceCascade.detectMultiScale(img, 1.2, 2, cv2.CASCADE_SCALE_IMAGE, (20, 20))    

if len(faceRects) > 0:
   for faceRect in faceRects:
      x, y, w, h = faceRect
      cv2.rectangle(img, (int(x), int(y)), (int(x) + int(w), int(y) + int(h)), (0, 255, 0), 2, 0)

cv2.imshow('video', img)   

key = cv2.waitKey(1)
    if key == ord('q'):
        break

好啦,最后,来看看效果吧。

基于Python OpenCV 的视频人脸检测_第1张图片

效果还是不错的,表情包也能识别。

备注:训练模板和检测部分的系数,大家有兴趣可以查阅资料,调整试一试效果,会有不一样的体验哦。

你可能感兴趣的:(Python)