一、面部识别
得益于大量前人的工作,如今利用Python做一些简单的计算机视觉工作已经变得非常非常简单了。像人脸识别、面部特征提取之类的工作,就可以直接拿来用,极少需要自己实现繁琐的算法。
就是一个这样的C++库,而同时它也提供了Python接口。
想必大家都有过在办公室遭遇boss探视的经历,而此时此刻你却在毫无自知地逛着淘宝/知乎/豆瓣,场面一度十分尴尬……
那我们就来尝试一下,用Python通过摄像头探测人脸。如果有人进入了摄像头范围,则让Python提出一个通知,告诉你——赶紧把不相关的东西关掉!
整个代码很短,无非几十行,为了能够使用,我们还需要安装一些包和库。这里需要用到的包括OpenCV和DLib。由于dlib需要boost-python,因此还需要安装boost和boost-python。(注意:boost-python默认情况下只编译python2依赖的库,如果使用python3,需要加编译开关;而dlib里是没有探测python版本的,所以可能还需要做一些小hack或者是直接改boost-python库里的文件名)
至于代码,可以简单地放出来:
import cv2
import dlib
from subprocess import call
from time import time
FREQ = 5
FACE_DETECTOR = dlib.get_frontal_face_detector
# macOS下可以使用AppleScript发送通知
def notify(text, title):
cmd = r'display notification "%s" with title "%s"'%(text, title)
call(["osascript", "-e", cmd])
if __name__ == '__main__':
# 初始化摄像头
cap = cv2.VideoCapture(0)
# 创建绘图窗口
# cv2.namedWindow('face')
notify_time = 0
while True:
# 获取一