基于Python實(shí)現(xiàn)打哈欠檢測(cè)詳解
效果圖
基本思路
- 在 OpenCV 中使用VideoCapture方法初始化視頻渲染對(duì)象
- 創(chuàng)建灰度圖像
- 導(dǎo)入預(yù)訓(xùn)練模型,識(shí)別臉部和人臉標(biāo)志
- 計(jì)算上唇和下唇距離(其它類似)
- 創(chuàng)建唇邊距離的If條件,滿足則是打哈欠,不滿足則只是簡(jiǎn)單的張嘴
- 顯示幀/圖像
部分源碼
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) # ------檢測(cè)人臉------# # 轉(zhuǎn)為灰度 img_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) faces = face_model(img_gray) for face in faces: # 檢測(cè)人臉,框起來(lái)-# 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) # ----------檢測(cè)人臉標(biāo)注-----------# shapes = landmark_model(img_gray, face) shape = face_utils.shape_to_np(shapes) # -------檢測(cè)上下唇--------# lip = shape[48:60] cv2.drawContours(frame, [lip], -1, (0, 165, 255), thickness=3) # -------計(jì)算上下唇距離-----# lip_dist = cal_yawn(shape) # 打印距離 # print(lip_dist) # 大于設(shè)定值,則認(rèn)定是打哈欠 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
到此這篇關(guān)于基于Python實(shí)現(xiàn)打哈欠檢測(cè)詳解的文章就介紹到這了,更多相關(guān)Python打哈欠檢測(cè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python利用matplotlib繪制散點(diǎn)圖的新手教程
這篇文章主要給大家介紹了關(guān)于Python利用matplotlib繪制散點(diǎn)圖的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11python實(shí)現(xiàn)周期方波信號(hào)頻譜圖
這篇文章主要介紹了python 周期方波信號(hào)頻譜圖,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07python安裝cxOracle避坑總結(jié)不要直接pip install
這篇文章主要為大家介紹了python安裝cx_Oracle是遇到的一些問(wèn)題的解決辦法的總結(jié),來(lái)幫大家避避坑有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步2021-10-10一文搞懂Python的hasattr()、getattr()、setattr()?函數(shù)用法
python中的getattr()、setattr()、hasattr()函數(shù)均是對(duì)類屬性或方法的操作,其中g(shù)etattr()用于獲取類或?qū)嵗兄付ǚ椒ǐ@取屬性的值,setattr()用于設(shè)置類或?qū)嵗袑傩曰蚍椒?hasattr()用于判斷類或?qū)嵗惺欠翊嬖谥付ǖ膶傩曰蚍椒?本文通過(guò)例子給大家詳解,一起看看吧2022-04-04Python要如何實(shí)現(xiàn)列表排序的幾種方法
這篇文章主要介紹了Python要如何實(shí)現(xiàn)列表排序的幾種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02python循環(huán)定時(shí)中斷執(zhí)行某一段程序的實(shí)例
今天小編就為大家分享一篇python循環(huán)定時(shí)中斷執(zhí)行某一段程序的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06