您的位置:首页 > 编程语言 > Python开发

基于Python OpenCV 的视频人脸检测

2017-09-02 14:54 786 查看

基于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