OpenCV人臉檢測 4 繪製人臉與人眼區域

2021-10-05 23:52:01 字數 3898 閱讀 4369

#img 為目標

#左上角座標為(x,y),右下角座標為(x+w,y+h),

#顏色(b,g,r),(255,0,0) 表示藍色,(0,255,0) 表示綠色,(0,0,255) 表示紅色,3 表示 bgr 三個通道。

# 2代表邊框線粗度為 2。

使用 opencv 分類器檢測人臉之後,一張中可能包含多個人臉,所以對每乙個識別到的人臉都繪製對應的矩形框。

)# 讀取

gray = cv2.cvtcolor(image,cv2.color_rgb2gray)

# 轉換為灰度

#cv2.cascadeclassifier()為載入模型方法

face = cv2.cascadeclassifier(r'g:\python32\lib\site-packages\cv2\data\haarcascade_frontalface_default.xml'

)# 人臉檢測器

# face_cascade.detectmultiscale() 為人臉檢測方法, gray 為待檢測灰度圖, 1.1 表示檢測框按 1.1 的比例放大, 3 表示乙個目標至少要被檢測到 3 次才算真正的目標。

faces = face.detectmultiscale(gray,

1.1,3)

# 識別人臉

for(x,y,w,h)

in faces :

# 標記人臉

cv2.rectangle(image,

(x,y)

,(x+w,y+h),(

0,255,0)

,2)#繪製矩形

#上兩句也可換成

#x, y, w, h = faces[0]

#cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2)

cv2.imshow(

'cute boy'

,image)

# 顯示

cv2.waitkey(0)

# 等待使用者關閉視窗

cv2.destroyallwindows(

)# 關閉視窗

進一步,我們在識別人臉的基礎上,使用官方提供的path-of-haarcascade_eye.xml人眼檢測模型,識別出人眼並繪製到上。

)# 讀取

gray = cv2.cvtcolor(image,cv2.color_rgb2gray)

# 轉換為灰度

face = cv2.cascadeclassifier(r'g:\python32\lib\site-packages\cv2\data\haarcascade_frontalface_default.xml'

)# 人臉檢測器

faces = face.detectmultiscale(gray,

1.1,3)

# 識別人臉

for(x,y,w,h)

in faces :

# 繪製人臉區域

cv2.rectangle(image,

(x,y)

,(x+w,y+h),(

0,0,255),

2)#繪製人臉矩形框

eye_cascade = cv2.cascadeclassifier(r'g:\python32\lib\site-packages\cv2\data\haarcascade_eye.xml'

)#人眼檢測器

eyes = eye_cascade.detectmultiscale(gray)

#識別人眼

for(ex, ey, ew, eh)

in eyes:

#繪製人眼

cv2.rectangle(image,

(ex, ey)

,(ex + ew, ey + eh),(

0,255,0)

,2)# 繪製人眼矩形框

cv2.imshow(

'img'

,image)

# 顯示

cv2.waitkey(0)

# 等待使用者關閉視窗

cv2.destroyallwindows(

)# 關閉視窗

所以,一般情況下,我們會先檢測出人臉區域,然後在人臉區域中使用眼睛區域檢測模型得到眼睛區域,進而繪製。

)# 讀取

gray = cv2.cvtcolor(image,cv2.color_rgb2gray)

# 轉換為灰度

face = cv2.cascadeclassifier(r'g:\python32\lib\site-packages\cv2\data\haarcascade_frontalface_default.xml'

)# 人臉檢測器

faces = face.detectmultiscale(gray,

1.1,3)

# 識別人臉

for(x,y,w,h)

in faces :

# 繪製人臉區域

cv2.rectangle(image,

(x,y)

,(x+w,y+h),(

0,0,

255),2

)#繪製人臉矩形框

face_gray = gray[y:y + h, x:x + w]

# 灰度的臉部區域

face_area = image[y:y + h, x:x + w]

# 原影象的臉部區域

eye_cascade = cv2.cascadeclassifier(r'g:\python32\lib\site-packages\cv2\data\haarcascade_eye.xml'

)#人眼檢測器

eyes = eye_cascade.detectmultiscale(face_gray)

#識別人眼

for(ex, ey, ew, eh)

in eyes:

#繪製人眼

cv2.rectangle(face_area,

(ex, ey)

,(ex + ew, ey + eh),(

0,255,0)

,2)# 繪製人眼矩形框

cv2.imshow(

'img'

,image)

# 顯示

cv2.waitkey(0)

# 等待使用者關閉視窗

cv2.destroyallwindows(

)# 關閉視窗

OpenCV人臉檢測

include include include include include include include include include include static cvmemstorage storage 0 建立乙個記憶體儲存器,來統一管理各種動態物件的記憶體 static cvhaar...

OpenCV人臉檢測

win7 32位 opencv3.0 vs2013 對資料夾中進行人臉檢測 在opencv中,人臉檢測用的是harr或lbp特徵,分類演算法用的是adaboost演算法。這種演算法需要提前訓練大量的,非常耗時,因此opencv已經訓練好了,把訓練結果存放在一些xml檔案裡面。在opencv3.0版本...

opencv人臉檢測

最近有空對學習下opencv的東西,本篇主要記錄對人臉檢測實現,而人臉檢測是為人臉識別做準備。opencv版本 3.3.0 環境 vs2015 void cascadeclassifier detectmultiscale inputarray image,vector objects,double...