使用opencv自带的分类器进行人脸识别,python中需要导入cv2模块。如果之前没有安装过这个模块可以用pip工具安装:
pip install opencv-python
安装完成后就可以开始编码了
1.导入模块
import cv2
2.加载分类器
myCascade = cv2.CascadeClassifier("cascade")
myCascade.load("D:/env/opencv2/opencv/build/share/OpenCV/haarcascades/haarcascade_frontalcatface.xml")
haarcascade_frontalcatface.xml分类器就是opencv自带的前脸识别分类器,目录中还有一些其他的分类器有兴趣可以尝试一下。
3.加载图片
image = cv2.imread("03.jpg");
使用imread函数,传入图片路径。
4.将图片转换为灰度图
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
5.传入灰度图进行检测,识别出人脸的区域。
rects = myCascade.detectMultiScale(gray, scaleFactor = 1.3,minNeighbors = 3,minSize=(100,100),flags=cv2.IMREAD_GRAYSCALE)
调用分类器对象的detectMultiScale函数进行检测,第一个参数就是贷检测的图片,scaleFactor搜索窗口变换的比例默认1.1,minNeighbors表示每个目标至少要被检测到多少次才算真的目标,minSize表示目标的最小尺寸,flags与旧函数cvHaarDetectObjects中的相同,也不知道是啥。
6.将检测出的矩形区域绘制到图片中
for (x,y,w,h) in rects:
cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,0),1)
7.最后显示绘有矩形区域的图片
cv2.imshow('img',image)
全部代码如下:
运行效果:
本文暂时没有评论,来添加一个吧(●'◡'●)