人脸检测
import numpy as np
import cv2
img=cv2.imread('./zhou.jpg')
img.shape
face_detector=cv2.CascadeClassifier('./haarcascade_frontalface_default.xml')
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
face_zones=face_detector.detectMultiScale(gray)
for x,y,w,h in face_zones:
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))
cv2.resize(img,(1063,552))
face_detector=cv2.CascadeClassifier('D:\Python3.6.8\......\haarcascade_frontalface_alt.xml')
视频中的人脸检测
import numpy as np
import cv2
win = cv2.namedWindow('dzd',cv2.WINDOW_NORMAL)
cv2.resizeWindow('dzd',640,200)
rose = cv2.imread('./rose.jpg')
cv2.imshow('dzd',rose)
cv2.waitKey(0)
cv2.destroyWindow('dzd')
v = cv2.VideoCapture(0)
face_detector = cv2.CascadeClassifier('./haarcascade_frontalface_alt2.xml')
while 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:
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'):
break
v.release()
cv2.destroyAllWindows()
人脸采集
import numpy as np
import cv2
v = cv2.VideoCapture(0)
face_detector = cv2.CascadeClassifier('./haarcascade_frontalface_alt2.xml')
num = 1
while 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]
face = cv2.resize(face,(64,64))
cv2.imwrite('./faces/lufengkun/%d.jpg'%(num),face)
num +=1
if num == 11:
break
elif key == ord('q'):
break
v.release()
cv2.destroyAllWindows()
f = cv2.imread('./faces/lufengkun/1.jpg')
f = cv2.equalizeHist(f[:,:,0])
cv2.imshow('f',f)
cv2.waitKey(0)
cv2.destroyAllWindows()