基于Python实现打哈欠检测详解
目录
- 效果图
- 基本思路
- 部分源码
效果图
文章图片
基本思路
- 在 OpenCV 中使用VideoCapture方法初始化视频渲染对象
- 创建灰度图像
- 导入预训练模型,识别脸部和人脸标志
- 计算上唇和下唇距离(其它类似)
- 创建唇边距离的If条件,满足则是打哈欠,不满足则只是简单的张嘴
- 显示帧/图像
部分源码
suc, frame = cam.read()# 读取不到退出if not suc:break# ---------FPS------------#ctime = time.time()fps = int(1 / (ctime - ptime))ptime = ctimecv2.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
【基于Python实现打哈欠检测详解】到此这篇关于基于Python实现打哈欠检测详解的文章就介绍到这了,更多相关Python打哈欠检测内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 如何使用Nodejs和MongoDB实现注册表单()
- Python Tkinter中的消息小部件如何使用()
- Python MySQL如何使用更新查询()
- 基于区块链技术的超级账本(Hyperledger) - 从理论到实战
- 一文了解 Python 中的 Collection 模块
- JS的深拷贝和浅拷贝的几种实现方案
- 如何实现Strassen的矩阵乘法算法()
- 算法(如何实现求n范围内出现的最大整数-S2)
- Python中的hash()方法怎么使用()
- android 通讯录实现