具体 OpenCV 安装说明,看以前发过的那篇文章

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
#!/usr/bin/env python
# coding=utf-8
# 天才小三斤 lauixData@gmail.com
import cv2

# xml 人脸识别检测库
xml = '/Users/sanjin/work/gittools/opencv/data/haarcascades/haarcascade_frontalface_alt.xml'

# 创建摄像头
cap = cv2.VideoCapture(0)
# 获取窗口大小
size = (int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)))
# 获取 fps
fps = cap.get(cv2.cv.CV_CAP_PROP_FPS)
# 获取 保存类型
fourcc = cv2.cv.FOURCC(*'mp4v')
# 创建视频窗口
out = cv2.VideoWriter('output.mp4', fourcc, 5, size)

# 创建 人脸识别对象
classifier = cv2.CascadeClassifier(xml)

# 死循环
while True:
# 获取视频内容
ret, img = cap.read()
# 获取人脸位置
faceRects = classifier.detectMultiScale(img, 1.2, 2, cv2.CASCADE_SCALE_IMAGE, (20, 20))
# 如果人脸存在 进行画方框
if len(faceRects) > 0:
for faceRect in faceRects:
# 获取 xy 坐标 wh 人脸大小
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)
# 打印输出 发现人类
print '有人 !'

# 视频流进行保存输出
out.write(img)
# 窗口显示
cv2.imshow('capture', img)
# 如果 key 等于 q 就结束 死循环 退出
key = cv2.waitKey(1)
if key == ord('q'):
break

cap.release()
cv2.destroyAllWindows()