#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...