使用OpenCv和Dlib進行打哈欠檢測

2021-01-07 不靠譜的貓

OpenCV: OpenCV是一個用於計算機視覺的庫函數,最初是用c++編寫的。

Dlib: Dlib是一個Python庫,包含了數據挖掘、數據結構、機器學習、圖像處理等工具。

打哈欠檢測與應用

打哈欠檢測就是使用OpenCV和Dlib來檢測打哈欠(由於疲勞或無聊而張大嘴巴深吸氣)。可廣泛應用於自駕車、駕駛員疲勞檢測、駕駛員睡意檢測、駕駛員意識檢測等領域。

安裝OpenCv和Dlib庫

OpenCv的安裝如下:

pip install opencv-python

Dlib的安裝如下:

pip install cmakepip install dlib

導入Opencv,Dlib和Numpy庫

設置dat文件

我們將.dat文件放置到工作目錄中,它是一個可以識別面部特徵並提供信息的模型。Dlib將從文件中提取所有信息,使用opencv查找不同的特徵。

定義函數獲取landmarks並使用顏色對其進行注釋

形狀預測器(dat文件)用於從圖像中提取信息,例如眼角,鼻子周圍的區域等。圖像被轉換為矩陣,並且annotate_landmarks()函數標記這些特徵/信息,其他函數使用這些特徵/信息來提取各種像上嘴唇,上嘴等

提取有關各種特徵的關鍵信息,以檢測打哈欠

當yawn_status為True時,打開攝像頭並定義打哈欠標準,然後相應地分配操作。Python實現如下:

如果lip_distance大於25,則(yawn_status)被定義為打呵欠。在這種情況下,屏幕上會出現「Employee is Yawning」的文字,然後我們播放mp3文件。如果Yawn_status為true,則「Yawn Count」將繼續顯示該對象打哈欠的次數。

實時顯示Landmark如下所示

相關焦點

  • 使用Python+OpenCV+Dlib實現人臉檢測與人臉特徵關鍵點識別
    我們可以將這些信息作為一個預處理步驟來完成,例如捕捉照片中人物的人臉(手動或通過機器學習),創建效果來「增強」我們的圖像(類似於Snapchat等應用程式中的效果),對人臉進行情感分析等等。今天我們將通過引入DLib和從圖像中提取面部特徵來將其提升到一個新的水平。
  • 給OpenCV初學者的禮物——OpenCV人臉檢測入門教程
    客觀地看,我們的社區的生存根基,其實並不是那少數幾個大牛,而是那更廣大的初級愛好者,他們才是社區的活力源泉,給論壇源源不斷的創造內容和點擊。OpenCV各版本間的使用方法並不是完全統一的,最新的是OpenCV4.0.1,已經與2.x版本的用法有較大的區別。
  • 【走進OpenCV】霍夫變換檢測直線和圓
    我們如何在圖像中快速識別出其中的圓和直線?一個非常有效的方法就是霍夫變換,它是圖像中識別各種幾何形狀的基本算法之一。霍夫線變換是一種在圖像中尋找直線的方法。OpenCV中支持三種霍夫線變換,分別是標準霍夫線變換、多尺度霍夫線變換、累計概率霍夫線變換。在OpenCV中可以調用函數HoughLines來調用標準霍夫線變換和多尺度霍夫線變換。
  • 利用OpenCV和深度學習實現人臉檢測
    這裡整理了一份前段時間做的小demo,實現獻醜了本文基於OpenCV3.3.1或以上版本(如OpenCV3.4)、DNN模塊和face_detector示例實現簡單、實時的人臉檢測。face_detector文件分析:本教程直接使用訓練好的.caffemodel來進行人臉檢測,即只需要.caffemodel和deploy.prototxt兩個文件。
  • 基於OpenCV的條形碼檢測
    打開一個新文件,將其命名為 detect_barcode.py,如何開始寫代碼:# 導入必要的包/庫import numpy as npimport argparseimport imutilsimport cv2# 構造參數解析並分析參數ap = argparse.ArgumentParser()ap.add_argument("-i"
  • 基於TensorFlow 、OpenCV 和 Docker 的實時視頻目標檢測
    翻譯 | 於志鵬  徐普     校對 | 陶玉龍     整理 | 孔令雙在本文中,我將介紹如何在 Docker 容器中使用 Tensorflow Object-detection API 來執行實時(網絡攝像頭)和視頻的目標檢測。
  • 樹莓派系列(三):openCV之圓檢測
    下面就結合實例和大家介紹下利用opencv裡面的函數來檢測圓形。第三個參數,int類型的method,即使用的檢測方法,目前OpenCV中就霍夫梯度法一種可以使用,它的標識符為CV_HOUGH_GRADIENT,在此參數處填這個標識符即可。第四個參數,double類型的dp,用來檢測圓心的累加器圖像的解析度與輸入圖像之比的倒數,且此參數允許創建一個比輸入圖像解析度低的累加器。上述文字不好理解的話,來看例子吧。
  • 超越Dlib!81個特徵點覆蓋全臉,面部特徵點檢測更精準(附代碼)
    新智元原創  來源:Reddit、GitHub  編輯: 金磊  【新智元導讀】人臉特徵點檢測是人臉檢測過程中的一個重要環節。以往我們採用的方法是OpenCV或者Dlib,雖然Dlib優於OpenCV,但是檢測出的68個點並沒有覆蓋額頭區域。
  • OpenCV手部關鍵點檢測(手勢識別)代碼示例
    昨日Satya Mallick又發表了使用OpenCV調用OpenPose工程中的手部關鍵點檢測(hand pose estimation)模型的文章,對於想要使用手部關鍵點檢測做手勢識別、手語識別、抽菸檢測等工程開發的朋友來說這是一個非常簡單的上手教程。先來看看作者發布的視頻效果:在大部分情況下還是不錯的,但也出現了少數幀關鍵點跳變的情況。
  • opencv教程-輪廓檢測
    1:輪廓檢測的基本流程圖像灰度化→圖像二值化或邊緣檢測→輪廓檢測2:輪廓特徵輪廓矩,面積,周長等3:輪廓近似、凸包輪廓近似:設置精度,對原輪廓進行多邊形近似。4:外接矩形這裡有兩種,常規外接矩形 和 最小外接矩形(有旋轉角度)。
  • Python系列之三——人臉檢測、人臉識別
    比詹小白還要白的童鞋可以查看往期文章進行了解噢1.人臉識別(一)——從零說起2.人臉識別(二)——訓練分類器3.人臉識別(二)——訓練分類器的補充說明4.人臉識別(三)——源碼放送一、人臉檢測      python版人臉檢測基本上可以參照C++版本的程序,根據語法不同進行改寫即可。
  • 用OpenCV和深度學習進行年齡識別
    在本教程中,您將學習如何使用OpenCV,深度學習和Python執行年齡的自動識別/預測。學完本教程後,您將能夠以相當高的精確度去自動預測靜態圖像文件和實時視頻中的人物年齡。要了解如何使用OpenCV和深度學習進行年齡識別,請繼續閱讀!
  • 使用Python+OpenCV實現神經網絡預處理人臉圖像的快速指南
    注意:本文中使用的所有靜態圖像都來自 https://imgflip.com/memetemplates圖片載入我們將使用imread()函數加載圖像,指定文件的路徑和mode,第二個參數對於動態運行通道和像素轉換非常重要。
  • 使用Python,Keras和OpenCV進行實時面部活體檢測
    它將允許我們識別從網絡攝像頭幀中提取的人臉,並將其嵌入向量與我們數據集中所有編碼的人臉進行比較。最接近的向量應該對應於同一個人。1.已知的面部數據集編碼該算法能夠識別自己和巴拉克歐巴馬。我選了大約10張照片。下面是處理和編碼已知面部數據集的Python代碼。現在我們知道了我們想要識別的每個人的編碼,我們可以嘗試通過網絡攝像頭識別和識別人臉。
  • 基於OpenCv 和 Python 的手指識別及追蹤
    翻譯 | 餘杭 Lamaric 校對 | 吳曉曼 審核 | 餘杭詳細代碼參考:https://github.com/amarlearning/opencv手指追蹤是許多計算機視覺應用的重要特徵。在該應用中,使用基於直方圖的方法將手與背景幀分離。 使用閾值處理和濾波技術來進行背景消除以獲得最佳結果。
  • Python代碼使用OpenCV進行Blob檢測
    blob是圖像中一組共享的區域,它們具有一些共同的屬性(例如灰度值,形狀,尺寸等)blob檢測的目的是識別並標記一些特定區域,blob檢測在自動化工業領域比較常見。  OpenCV提供了一種方便的方法來檢測blob並根據不同的特徵對其進行過濾。
  • 用OpenCV和Python模糊和匿名化人臉
    圖3:使用OpenCV和Python進行人臉模糊的第一步是檢測圖像/視頻(圖像源)中的所有人臉。 這裡可以使用任何人臉檢測器,只要它可以在圖像或視頻流中生成人臉的邊界坐標。有關如何檢測圖像中的人臉的詳細信息,請參閱臉檢測指南(https://www.pyimagesearch.com/2018/02/26/face-detection-with-opencv-and-deep-learning/)。一旦檢測到人臉,步驟2是提取感興趣區域(ROI):
  • 【走進OpenCV】學習Opencv不得不掌握的操作
    圖像初始化操作#include<opencv2\opencv.hpp>   #include<opencv2\highgui\highgui.hpp>using namespace std;using namespace cv;int main(int argc, char** argv){
  • 基於opencv 的圖像處理入門教程
    前言雖然計算機視覺領域目前基本是以深度學習算法為主,但實際上很多時候對圖片的很多處理方法,並不需要採用深度學習的網絡模型,採用目前成熟的圖像處理庫即可實現,比如 OpenCV 和 PIL ,對圖片進行簡單的調整大小、裁剪、旋轉,或者是對圖片的模糊操作。