简介
环境:Python3+OpenCV3.4
在OpenCV中主要使用了两种特征(即两种方法)进行人脸检测,Haar特征和LBP特征。使用已经训练好的XML格式的分类器进行人脸检测。在OpenCV的安装目录下的sources文件夹里的data文件夹里可以看到下图所示的内容(opencv\sources\data\haarcascades ):
文件夹的名字“haarcascades”、“hogcascades”和“lbpcascades”分别表示通过“haar”、“hog”和“lbp”三种不同的特征而训练出的分类器:"haar"特征主要用于人脸检测,“hog”特征主要用于行人检测,“lbp”特征主要用于人脸识别,“eye”特征主要用于眼睛的检测识别。
OpenCV介绍
静态图片人脸识别代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import cv2 # 指定图片的人脸识别然后存储 img = cv2.imread("./opencvpic/1.jpg") color = (0, 255, 0) grey = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) classfier = cv2.CascadeClassifier("./data/haarcascade_frontalface_alt2.xml") faceRects = classfier.detectMultiScale(grey, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32)) if len(faceRects) > 0: # 大于0则检测到人脸 for faceRect in faceRects: # 单独框出每一张人脸 x, y, w, h = faceRect cv2.rectangle(img, (x - 10, y - 10), (x + w + 10, y + h + 10), color, 40) # 控制绿色框的粗细 # 写入图像 cv2.imwrite('./opencvpic/aaa.jpg', img) |
效果:
动态摄像头人脸识别
按帧数读取图片
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import cv2 cap = cv2.VideoCapture(0) face_cascade = cv2.CascadeClassifier(r'./data/haarcascade_frontalface_default.xml') # 加载人脸特征库 while(True): ret, frame = cap.read() # 读取一帧的图像 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 转灰 faces = face_cascade.detectMultiScale(gray, scaleFactor = 1.15, minNeighbors = 5, minSize = (5, 5)) # 检测人脸 for(x, y, w, h) in faces: cv2.rectangle(gray, (x, y), (x + w, y + h), (0, 255, 0), 2) # 用矩形圈出人脸 cv2.imshow('Face Recognition', gray) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() # 释放摄像头 cv2.destroyAllWindows() |
效果:
虽然不明白,但是感觉最后一张图好厉害的样子,哈啊哈
哈哈哈哈