偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

使用Python + OpenCV來實現(xiàn)臉部和眼睛的檢測

大數(shù)據(jù)
本篇文章使用Python和OpenCV中的Haar特征分類器對人臉及眼睛進行檢測和追蹤。

[[198752]]

本篇文章使用Python和OpenCV中的Haar特征分類器對人臉及眼睛進行檢測和追蹤。在開始之前,有幾件準備工作要完成。

  • 第一,你需要有一個攝像頭,如果沒有的話也可以使用視頻文件來替代。
  • 第二,需要在python中安裝OpenCV庫。具體的方法是在這里下載相應(yīng)的wheel(.whl)文件,并使用pip進行安裝。
  • 第三,下載OpenCV中的Haar特征分類器,你可以從Opencv官網(wǎng)下載源程序解壓后獲得Haar特征分類器,也可以直接下載所需的xml文件。

在完成準備工作后,我們開始進行人臉及眼睛的檢測和追蹤工作。首先導(dǎo)入所需使用的庫文件。這里我們只需要使用numpy和cv2兩個庫。

  1. #導(dǎo)入所需庫文件 
  2.  
  3. import numpy as np 
  4.  
  5. import cv2  

加載Haar特征分類器中的面部識別和眼睛識別兩個xml文件。如何你還需要識別更多的元素也在這里一并加載。

  1. #加載面部識別文件(請按文件實際存儲路徑進行調(diào)整) 
  2.  
  3. #https://github.com/Itseez/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml 
  4.  
  5. face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml'
  6.  
  7. #加載眼部識別文件(請按文件實際存儲路徑進行調(diào)整) 
  8.  
  9. #https://github.com/Itseez/opencv/blob/master/data/haarcascades/haarcascade_eye.xml 
  10.  
  11. eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml' 

打開你的攝像頭來獲取視頻,到這一步攝像頭開始工作,但還沒有任何影像輸出。如果沒有攝像頭可以使用電腦里的視頻文件進行替代。

  1. #打開攝像頭獲取視頻 
  2. cap = cv2.VideoCapture(0)  

我們同時將對攝像頭獲取的圖像進行保存,這里對視頻文件進行處理并設(shè)置保存路徑及視頻尺寸。(這一步不是必須的操作)

  1. #編譯并輸出保存視頻 
  2. fourcc = cv2.VideoWriter_fourcc(*'XVID'
  3. out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))  

開始獲取并處理視頻內(nèi)容。下面是一個無限的循環(huán)結(jié)構(gòu),通過按鍵q可以結(jié)束循環(huán)。在這個循環(huán)中ret獲取攝像頭是否有返回的布爾值,img獲取攝像頭拍攝的視頻內(nèi)容。我們首先將攝像頭獲取的彩色圖像轉(zhuǎn)化為灰度圖像。后續(xù)的操作將主要在灰度圖像上完成,然后再使用灰度圖像中的坐標對原始的彩色圖像進行標記和輸出。圖像轉(zhuǎn)化為灰度后首先進行人臉檢測,然后在人臉檢測的基礎(chǔ)上再進行眼睛檢測,這樣做的原因有兩點,1,避免面部以外的物體被錯誤的識別為眼睛,2,眼睛識別算法需要一些眼睛周圍的面部特征來進行檢測,從而提高準確率。

隨后使用矩形繪制出人臉的位置和眼睛的位置,在設(shè)置繪制顏色時需要注意,OpenCV中的顏色值并不是RGB,而是BRG。檢測和繪制完成后對圖像進行輸出。這時可以在視頻窗口中看到被標記的面部和眼睛。由于我們使用的Haar特征分類器是正面面部識別,因此需要正對攝像頭。如果面部發(fā)生偏轉(zhuǎn)則無法識別。

  1. #無限循環(huán) 
  2. while(True): 
  3.     #獲取視頻及返回狀態(tài) 
  4.     ret, img = cap.read() 
  5.     #將獲取的視頻轉(zhuǎn)化為灰色 
  6.     gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
  7.     #檢測視頻中的人臉,并用vector保存人臉的坐標、大?。ㄓ镁匦伪硎荆?nbsp;
  8.     faces = face_cascade.detectMultiScale(gray, 1.3, 5) 
  9.   
  10.     #臉部檢測 
  11.     for (x,y,w,h) in faces: 
  12.         cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) 
  13.         roi_gray = gray[y:y+h, x:x+w] 
  14.         roi_color = img[y:y+h, x:x+w] 
  15.         #檢測視頻中臉部的眼睛,并用vector保存眼睛的坐標、大?。ㄓ镁匦伪硎荆?nbsp;
  16.         eyes = eye_cascade.detectMultiScale(roi_gray) 
  17.         #眼睛檢測 
  18.         for (ex,ey,ew,eh) in eyes: 
  19.             cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2) 
  20.   
  21.     #顯示原圖像 
  22.     cv2.imshow('img',img) 
  23.     #按q鍵退出while循環(huán) 
  24.     if cv2.waitKey(30) & 0xFF == ord('q'): 
  25.         break  

退出while循環(huán)后釋放攝像頭,完成視頻輸出并關(guān)閉所有窗口。

  1. #釋放攝像頭 
  2. cap.release() 
  3. #關(guān)閉視頻輸出 
  4. out.release() 
  5. #關(guān)閉所有窗口 
  6. cv2.destroyAllWindows() 

 

 

 

以下是完整的人臉及眼睛檢測代碼:

  1. def face_eye(): 
  2.     import numpy as np 
  3.     import cv2 
  4.   
  5.     face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml'
  6.     eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml'
  7.   
  8.     cap = cv2.VideoCapture(0) 
  9.     fourcc = cv2.VideoWriter_fourcc(*'XVID'
  10.     out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480)) 
  11.   
  12.     while(True): 
  13.         ret, img = cap.read() 
  14.         gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
  15.         faces = face_cascade.detectMultiScale(gray, 1.3, 5) 
  16.   
  17.         for (x,y,w,h) in faces: 
  18.             cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) 
  19.             roi_gray = gray[y:y+h, x:x+w] 
  20.             roi_color = img[y:y+h, x:x+w] 
  21.             eyes = eye_cascade.detectMultiScale(roi_gray) 
  22.             for (ex,ey,ew,eh) in eyes: 
  23.                 cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2) 
  24.   
  25.         cv2.imshow('img',img) 
  26.         if cv2.waitKey(30) & 0xFF == ord('q'): 
  27.             break 
  28.     cap.release() 
  29.     out.release() 
  30.     cv2.destroyAllWindows() 
  31.   
  32. face_eye()  

Read more: http://bluewhale.cc/2017-07-28/use-python-and-opencv-to-detect-faces-and-eyes.html#ixzz4o6BB3n4N 

責(zé)任編輯:龐桂玉 來源: 36大數(shù)據(jù)
相關(guān)推薦

2024-10-29 16:18:32

YOLOOpenCV

2024-01-29 08:21:59

AndroidOpenCV車牌

2022-04-05 20:54:21

OpenCVPython人臉檢測

2024-12-23 14:12:41

2025-02-17 07:00:00

ORB對象跟蹤器計算機視覺

2022-05-03 09:59:43

網(wǎng)絡(luò)釣魚數(shù)據(jù)集機器學(xué)習(xí)

2018-06-29 10:15:20

PythonOpenCV人臉識別

2024-01-03 17:32:53

2023-08-22 16:05:09

Pytorch人臉替換

2017-09-22 11:45:10

深度學(xué)習(xí)OpenCVPython

2021-11-24 08:41:52

BufferedWriJavaBufferedRea

2020-10-12 09:22:30

PythonCNN檢測

2022-06-28 13:41:07

瀏覽網(wǎng)頁互聯(lián)網(wǎng)交互Python

2023-01-29 14:29:59

Python識別車牌

2024-01-07 16:56:59

Python人工智能神經(jīng)網(wǎng)絡(luò)

2011-03-16 09:05:29

iptablesNAT

2018-05-08 14:25:22

Pythondlib人臉檢測

2015-09-07 11:49:30

CaliseRedshiftLinux

2025-02-10 12:00:00

圖像分類OpenCVPython

2022-09-21 23:34:16

點云Python地面檢測
點贊
收藏

51CTO技術(shù)棧公眾號