opencv 檢測人臉區域

2021-10-01 18:54:23 字數 4215 閱讀 7884

)#裡面可以有多人進行識別

img.shape #(325,500,3)

#級聯分類器(多個小的分類器合到一起工作,級聯) 不同小分類器識別眼睛 鼻子 耳朵 嘴 合到一起就是人臉

#haar特徵資料:嘴唇 嘴唇上的顏色深度 比周邊深

#演算法級聯分類器,根據haar特徵進行檢測 符合特徵 識別出來

face_detector=cv2.cascadeclassifier(

'./haarcascade_frontalface_default.xml'

)#將site-packages/cv2/data的乙個haarcascade_frontalface_default.xml放到檔案下

gray=cv2.cvtcolor(img,cv2.color_bgr2gray)

face_zones=face_detector.detectmultiscale(gray)

#檢測多重縮放

#返回的資料是目標區域坐上角的座標,與目標區域寬度和高度,正方形區域 array([[183,51,188,188]],dtype=int32)

for x,y,w,h in face_zones:

#cv2.rectangle(img,pt1=(x,y),pt2=(x+w,y+h),color=[0,0,255],thickness=2) #矩形

cv2.circle(img,center=

(x+w//

2,y+h//2)

,radius=w//

2,color=[0

,0,255

],thickness=2)

cv2.imshow(

'face'

,img)

#線的厚度

cv2.waitkey(0)

cv2.destroyallwindows(

)

face_zones=face_detector.detectmultiscale(gray,scalefactor=

1.01

,minneighbors=

20,minsize=(20

,20),maxsize=(28

,28))

#有引數scalefactor縮放引數 是乙個大於1的數 計算機進行識別也是乙個乙個框進行掃瞄 從小框按比例變大框 比例太大就會漏掉 scalefactor調整為1.5識別的人臉就會變少很多 另乙個引數minsize

cv2.resize(img,

(1063

,552))

#也可以使用絕對路徑進行使用 haarcascade檔案也可以換成alt等其他

face_detector=cv2.cascadeclassifier(

'd:\python3.6.8\......\haarcascade_frontalface_alt.xml'

)

import numpy as np

import cv2

#建立乙個視窗叫dzd

win = cv2.namedwindow(

'dzd'

,cv2.window_normal)

#視窗大小可以改變

#autosize視窗大小不可改變 freeratio自適應比例 fullscreen全屏,不可變

cv2.resizewindow(

'dzd'

,640

,200

)#視窗調整

# frame = cv2.resize(frame,(640,360)) #調整視窗

gray = cv2.cvtcolor(frame,cv2.color_bgr2gray)

#轉為黑白

face_zones = face_detector.detectmultiscale(gray,scalefactor =

1.1,

minneighbors =3)

for x,y,w,h in face_zones:

cv2.rectangle(frame,pt1 =

(x,y)

,pt2 =

(x+w,y+h)

,color =[0

,0,255

],thickness=2)

cv2.imshow(

'dzd'

,frame)

key = cv2.waitkey(1)

if key ==

ord(

'q')

:#將q轉化為ascall碼

break

v.release(

)cv2.destroyallwindows(

)

import numpy as np

import cv2

v = cv2.videocapture(0)

#開啟攝像頭

#載入人臉識別

face_detector = cv2.cascadeclassifier(

'./haarcascade_frontalface_alt2.xml'

)num =

1while

true

: flag,frame = v.read()if

not flag:

break

gray = cv2.cvtcolor(frame,cv2.color_bgr2gray)

face_zones = face_detector.detectmultiscale(gray,scalefactor =

1.1,

minneighbors =3)

for x,y,w,h in face_zones[:1

]:cv2.rectangle(frame,pt1 =

(x,y)

,pt2 =

(x+w,y+h)

,color =[0

,0,255

],thickness=2)

cv2.imshow(

'dzd'

,frame)

key = cv2.waitkey(41)

if key ==

ord(

'y'):if

len(face_zones)

>0:

face = frame[y+

2:y+h-

1,x+

2:x+w-1]

#去掉紅線

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

img 為目標 左上角座標為 x,y 右下角座標為 x w,y h 顏色 b,g,r 255,0,0 表示藍色,0,255,0 表示綠色,0,0,255 表示紅色,3 表示 bgr 三個通道。2代表邊框線粗度為 2。使用 opencv 分類器檢測人臉之後,一張中可能包含多個人臉,所以對每乙個識別到的...

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版本...