配置
- python3
- Tensorflow
- opencv2
步骤
获取并显示摄像头实时视频&读取本地视频
利用OpenCV读取视频流
1 | cv2.namedWindow(window_name) |
释放视频信息并销毁所有窗口
1 | # 释放摄像头并销毁所有窗口 |
从实时视频流中识别出人脸区域
使用人脸识别分类器
opencv自带许多个人脸识别分类器,可以看下官方源码 1
2
3
4
5
6# 使用人脸识别分类器
classfier = cv2.CascadeClassifier("haarcascade_frontalface_alt2.xml")
# 识别出人脸后要画的边框的颜色,RGB格式
color = (0, 255, 0)
# 将当前帧转换成灰度图像
grey = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
人脸检测并框出人像
读取视频信息后 1
2
3
4
5
6
7# 人脸检测,1.2和2分别为图片缩放比例和需要检测的有效点数
faceRects = classfier.detectMultiScale(grey, scaleFactor = 1.2, minNeighbors = 1, minSize = (64, 64))
if len(faceRects) > 0: #大于0则检测到人脸
for faceRect in faceRects: #单独框出每一张人脸
x, y, w, h = faceRect
cv2.rectangle(frame, (x - 10, y - 10), (x + w + 10, y + h + 10), color, 2)
准备人脸数据
把框出的人脸数据保存为图片
- num是图片数
1
2
3
4# 将当前帧保存为图片
img_name = '%s/%d.jpg'%(path_name, num)
image = frame[y - 10: y + h + 10, x - 10: x + w + 10]
cv2.imwrite(img_name, image)
显示当前捕捉到了多少人脸图片
1 | font = cv2.FONT_HERSHEY_SIMPLEX |
完整代码
效果如下
错误
error: (-215) !empty() in function cv::CascadeClassifier::detectMultiScale
路径错误提示: 找不到你的xml文件,说明你的xml的路径出错了
eg:我的xml在data文件下的data文件中
Keras 2.0版本运行无更新函数出错
Update your Conv2D
call to the Keras 2 API
出现这些警告是由于keras的版本更新的问题
Keras 2.0版本中,定义卷积层需要用Conv2D
而不再是Convolution2D
即使用 1
model.add(Conv2D(64, 3, 3, border_mode='same'))
而不是 1
model.add(Convolution2D(64, 3, 3, border_mode='same'))
同时更改import
为 1
from keras.layers import Conv2D
Keras测试错误ProgbarLogger' no attribute 'log_values
由无使用Conv2D
函数而引发的错误 描述为:没找到log_values属性 解决方法: 在定义卷积层时使用Conv2D
函数,该错误消失