环境博主用的是Keras2.2.4+Tensorflow-gpu1.11.0+python3.6,如果有小伙伴还不懂怎么配置gpu环境的话可以看博主第一篇博客噢。
在命令行进入这个环境后就
pip install mtcnn
这样就可以调用这个集成包了。用你自己的脸来检测检测吧,那么还需要cv2来调用你的摄像头。在命令行进入环境后安装这个包。
pip install opencv-python
非常简单首先导入包。来用摄像头捕捉你的大头,实例化mtcnn。
.read()方法就是读取摄像头捕捉的图片。draw呢就是图片了。.detect_faces(draw)方法对图片进行检测。如果检测到人脸,那么face就不是空列表,如果没检测到人脸,face就是个空列表。所以这里进行一个if判断。
那么如果有人脸,这个方法返回的face有什么东西呢?
[{'box': [57, 71, 79, 97],
'confidence': 0.9995273351669312,
'keypoints': {'left_eye': (73, 110),
'right_eye': (106, 104),
'nose': (89, 133),
'mouth_left': (82, 147),
'mouth_right': (114, 141)}}]
box就是人脸框,第一个第二个代表坐标,第三个第四个代表两条邻边的长度。confidence就是置信度,有多大把握认定这个结果。keypoints呢就是上篇博客讲到的5个特征值,看英文就明白意思了,对应的元组是坐标。
from mtcnn import MTCNN
import cv2
video_capture = cv2.VideoCapture(0)
detector = MTCNN()
#不断获取你的大头
while True:
ret, draw = video_capture.read()
print(draw)
face = detector.detect_faces(draw)
if face:
face = face[0]
print(face)
box = face["box"]
I = cv2.rectangle(draw, (box[0], box[1]),
(box[0] + box[2], box[1] + box[3]),
(255, 0, 0), 2)
cv2.imshow('Video', draw)
else:
cv2.imshow('Video', draw)
if cv2.waitKey(20) & 0xFF == ord('q'):
break
video_capture.release()
cv2.destroyAllWindows()
.rectangle方法就是画图,用上面一些框的参数进行描绘框。最后imshow出来。
很简单的一个调包程序,你是否学会了呢?
这个就不贴上图了,小伙伴运行一下就知道了。