Python3.6基于openCV2人脸识别18行代码
Python3.6基于openCV2人脸识别18行代码
一、安装
1.打开命令行,输入pip install numpy,安装numpy。
2.安装opencv。 pip install opencv-python
二、实现
(1)获取人脸识别训练数据
CascadeClassifier,是Opencv中做人脸检测的时候的一个级联分类器。
face_cascade=cv2.CascadeClassifier("训练数据")
1
训练数据地址:训练数据
(2)读取图片
image = cv2.imread("待识别的图片路径")
1
(3)灰度转换
cv2.cvtColor(input_image, flag)函数实现图片颜色空间的转换,flag 参数决定变换类型。
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
1
(4)探测人脸
detectMultiScale()是完成实际人脸识别工作的函数。
参数说明:
grey:要识别的图像数据。
scaleFactor:表示在前后两次相继的扫描中,搜索窗口的比例系数。默认为1.1即每次搜索窗口依次扩大10%。
minNeighbors:表示构成检测目标的相邻矩形的最小个数。
minSize和maxSize用来限制得到的目标区域的范围。
(5)画矩形(当然,你也可以使用circle函数画圆形)
cv2.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]])
五个参数,图片名称、两个对角点坐标、颜色数组、线宽。
(6)显示图片
cv2.imshow(‘image’,img)
前一个参数是窗口的名字,要用字符串。
(7)窗口保留
cv2.waitKey()是一个键盘绑定功能。当参数为0时,窗口将保留直到任意键按下。
实例
图片素材
源代码
# -*- coding: UTF-8 -*- import cv2 face_cascade=cv2.CascadeClassifier("D://Anaconda3/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml") image = cv2.imread("F:\\timg.jpg") #读取图片 gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) #灰度转换 faces = face_cascade.detectMultiScale( #探测人脸 gray, scaleFactor = 1.15, minNeighbors = 5, minSize = (5,5), ) print("发现{0}个人脸!".format(len(faces))) for(x,y,w,h) in faces: cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,0),2) cv2.imshow("Gakki!",image) #显示图像 cv2.waitKey(0)
结果
发现4个人脸!