python实时打哈欠检测

网友投稿 270 2022-08-30


python实时打哈欠检测

效果

基本思路

在 OpenCV 中使用VideoCapture方法初始化视频渲染对象创建灰度图像导入预训练模型,识别脸部和人脸标志计算上唇和下唇距离(其它类似)创建唇边距离的If条件,满足则是打哈欠,不满足则只是简单的张嘴显示帧/图像

部分源码

suc, frame = cam.read() # 读取不到退出 if not suc: break # ---------FPS------------# ctime = time.time() fps = int(1 / (ctime - ptime)) ptime = ctime cv2.putText(frame, f'FPS:{fps}', (frame.shape[1] - 120, frame.shape[0] - 20), cv2.FONT_HERSHEY_PLAIN, 2, (0, 200, 0), 3) # ------检测人脸------# # 转为灰度 img_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) faces = face_model(img_gray) for face in faces: # 检测人脸,框起来-# x1 = face.left() y1 = face.top() x2 = face.right() y2 = face.bottom() # print(face.top()) cv2.rectangle(frame, (x1, y1), (x2, y2), (200, 0, 00), 2) # ----------检测人脸标注-----------# shapes = landmark_model(img_gray, face) shape = face_utils.shape_to_np(shapes) # -------检测上下唇--------# lip = shape[48:60] cv2.drawContours(frame, [lip], -1, (0, 165, 255), thickness=3) # -------计算上下唇距离-----# lip_dist = cal_yawn(shape) # 打印距离 # print(lip_dist) # 大于设定值,则认定是打哈欠 if lip_dist > yawn_thresh: cv2.putText(frame, f'User Yawning!', (frame.shape[1] // 2 - 170, frame.shape[0] // 2), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 0, 200), 2) # 按字母q退出 cv2.imshow('Webcam', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break

完整项目


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python:爬取软科排名的历年所有数据(python爬取排行榜)
下一篇:JAVA文件读写操作详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~