[用Python写一个简单的脸部识别项目|汇总]这个系列的第四篇文章,这篇介绍如何将脸部识别和语音结合在一起。
实现多线程
为什么需要多线程
摄像头在不停的扫描和计算图像的相似度占据很大的计算量,同时要处理谷歌的speech2text API会造成卡顿的现象。
多线程的实现
- 主线程:画面更新
- 副线程1:识别出人脸的位置,并识别出人名
- 副线程2:识别出人名后调出谷歌API
- 如何将class的不同函数分成不同的线程
- 新建threaded函数,用wrapper函数包起来,在要thread的函数上头加上@threaded,好难解释看这个stack overflow的帖子吧
观察者模式实现 observer Pattern
- Observer Pattern的概念[Observer Pattern 学习资料]
- 语音不需要不停的播放,收到人名的时候播放就行了
- Publisher:faceDetector class
- Subscriber: speaker class
代码实现
生成多线程的wrapper
1 | def threaded(fn): |
speaker class的代码
1 | import cv2 |
faceDetector class的代码
1 | class FaceDetector: |
主程序
1 | if __name__=='__main__': |