python+opencv实现人脸识别

       OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

        python官网下载python安装,然后安装opencv库,就可以使用了。

代码如下:

import cv2

#识别图片路径
image = cv2.imread("pic/lihong.jpg")
#灰度处理
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
#训练好的模型haarcascade_frontalface_default.xml
face_cascade = cv2.CascadeClassifier(r'./venv/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml')

#识别到的人脸,应该是一个表示区域的数组
#gray--待检测图片,一般为灰度图像加快检测速度
#scaleFactor--表示在前后两次相继的扫描中,搜索窗口的比例系数。默认为1.1即每次搜索窗口依次扩大10%
#minNeighbors--表示构成检测目标的相邻矩形的最小个数(默认为3个)。
#flags--要么使用默认值,要么使用CV_HAAR_DO_CANNY_PRUNING,如果设置为CV_HAAR_DO_CANNY_PRUNING,
# 那么函数将会使用Canny边缘检测来排除边缘过多或过少的区域,因此这些区域通常不会是人脸所在区域;
faces = face_cascade.detectMultiScale(
    gray,
    scaleFactor=1.15,
    minNeighbors= 5,
    minSize=(5,5),
    flags=0
)

print (faces)
print ("发现了{0}个人脸".format(len(faces)))

# x,y为坐标,w是框的边长,255带边框的颜色,2代表框线的粗细
#cv2.rectangle(image, (x,y), (x+w,y+w), (0, 225, 0), 2)

for(x,y,w,h) in faces:
    cv2.rectangle(image,(x,y),(x+w,y+w), (0,255,0),2)

cv2.imshow("Image Title", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

控制台打印内容:

[[ 89  86 136 136]]
发现了1个人脸
 

 

效果如下:

python+opencv实现人脸识别_第1张图片

 

检测到力宏的脸了。

 

多个人物的情况:

[[142  62  72  72]
 [251  61  82  82]
 [412  80  74  74]]
发现了3个人脸

python+opencv实现人脸识别_第2张图片

 

你可能感兴趣的:(python+opencv实现人脸识别)