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个人脸
 

 

效果如下:

lihong

 

检测到力宏的脸了。

 

多个人物的情况:

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

duoren

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值