基于Python实现打哈欠检测详解

目录

  • 效果图
  • 基本思路
  • 部分源码

效果图 基于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打哈欠检测内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    推荐阅读