利用OpenCV中自己已经训练好的检测器
1.读取图片,并转换为灰度图像
2.实例化人脸和眼睛检测的分类器对象
# 实例化级联分类器
face_cas = cv.CascadeClassifier("haarcascade_frontalface_default.xml")
# 加载分类器
face_cas.load("haarcascade_frontalface_default.xml")
3.进行人脸和眼睛的检测
faceRects = face_cas.detectMultiScale(gray,scaleFactor,minNeighbors,minSize=)
参数:
Gray:要进行检测的人脸图像
4.将检测结果绘制出来
import cv2 as cv
import matplotlib.pyplot as plt
# 1 导入图片
img = cv.imread("../image/111.jpg")
gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
# 2 实例化OpenCV人类和眼睛识别的分类器
face_cas = cv.CascadeClassifier("haarcascade_frontalface_default.xml")
face_cas.load("haarcascade_frontalface_default.xml")
eyes_cas = cv.CascadeClassifier("haarcascade_eye.xml")
eyes_cas.load("haarcascade_eye.xml")
# 3 调用识别人脸
faceRects = face_cas.detectMultiScale(gray,scaleFactor=1.2,minNeighbors=3,minSize=(32,32))
for faceRect in faceRects:
x,y,w,h = faceRect
# 框出人脸
cv.rectangle(img,(x,y),(x+h,y+w),(0,255,0),3)
# 4 在识别出的人脸中进行眼睛的检测
rol_color = img[y:y+h,x:x+w]
rol_gray = gray[y:y+h,x:x+w]
eyes = eyes_cas.detectMultiScale(rol_gray)
for (ex,ey,ew,eh) in eyes:
cv.rectangle(rol_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
## 5 检测结果绘制
plt.figure(figsize=(8,6),dpi=100)
plt.imshow(img[:,:,::-1]),plt.title('检测结果')
plt.show()
在视频中的人脸检测如下:
import cv2 as cv
import matplotlib.pyplot as plt
# 1 读取视频
cap = cv.VideoCapture("../image/676.mp4")
# 2 在每一帧数据中进行人脸识别
while(cap.isOpened()):
ret,frame = cap.read()
if ret == True:
gray = cv.cvtColor(frame,cv.COLOR_BGR2GRAY)
# 3 实例化OpenCV人脸识别的分类器
face_cas = cv.CascadeClassifier("haarcascade_frontalface_default.xml")
face_cas.load("haarcascade_frontalface_default.xml")
# 4 调用人脸识别
faceRects = face_cas.detectMultiScale(gray,scaleFactor=1.2,minNeighbors=3,minSize=(32,32))
for faceRect in faceRects:
x,y,w,h = faceRect
# 框出人脸
cv.rectangle(frame,(x,y),(x+h,y+w),(0,255,0),3)
cv.imshow("frame",frame)
if cv.waitKey(1) & 0xFF == ord('q'):
break
# 5 释放资源
cap.release()
cv.destroyAllWindows()
opencv中人脸识别的流程是:
1.读取图片,并转换成灰度图
2.实例化人脸和眼睛检测的分类器对象
# 实例化级联分类器
face_cas = cv.CascadeClassifier("haarcascade_frontalface_default.xml")
# 加载分类器
face_cas.load("haarcascade_frontalface_default.xml")
3.进行人脸和眼睛的检测
rect = classifier.detectMultiScale(gray,scaleFactor,minNeighbors,minSize,maxsize)
4.绘制结果图像