)#裡面可以有多人進行識別
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版本...