Python-OpenCV人脸检测(代码)

Python-OpenCV人脸检测(代码)

@author:wepon

@blog:http://blog.csdn.net/u012162613/article/details/43523507


做人脸识别,首先要检测出图片/视频中的人脸,今天就研究了一下OpenCV的Python接口,把常用的一些功能模块写成函数。基于Python-OpenCV以及PIL,实现图片中人脸的检测以及截取保存、眼睛检测、笑脸检测。下面简单总结一下。


一、软件安装

安装Python-OpenCV以及其依赖库、PIL,通过软件包管理器安装即可(Ubuntu系统):

sudo apt-get install libopencv-*
sudo apt-get install python-opencv
sudo apt-get install python-imaging

安装完后,在”/usr/share/opencv/haarcascades/”目录下,可以看到很多的xml文件,如下图。这些文件保存的就是训练好之后的haar特征,关于人脸检测的haar分类器,推荐博文:《浅析人脸检测之Haar分类器方法》《目标检测的图像特征提取之(三)Haar特征》。本文不阐述原理,只介绍怎么用这些xml文件来进行人脸检测。




二、python-opencv实现人脸检测

  • 人脸检测

定义人脸检测函数detectFaces(),检测图片中所有出现的人脸,并返回人脸的矩形坐标(矩形左上、右下顶点坐标)。使用上面提到的xml文件(haar特征),haarcascades目录下有好几个是关于人脸检测的文件,这里选择haarcascade_frontalface_default.xml,当然也可以使用其他的。另外需要注意的是,必须以灰度图作为haar分类器的输入。

def detectFaces(image_name):
    img = cv2.imread(image_name)
    face_cascade = cv2.CascadeClassifier("/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml")
    if img.ndim == 3:
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    else:
        gray = img #if语句:如果img维度为3,说明不是灰度图,先转化为灰度图gray,如果不为3,也就是2,原图就是灰度图

    faces = face_cascade.detectMultiScale(gray, 1.2, 5)#1.35是特征的最小、最大检测窗口,它改变检测结果也会改变
    result = []
    for (x,y,width,height) in faces:
        result.append((x,y,x+width,y+height))
    return result


  • 34
    点赞
  • 290
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要使用OpenCV进行人脸识别,你可以按照以下步骤来实现: 首先,在项目文件夹下创建一个脚本文件。 然后,导入OpenCV库并指定待检测的图片和人脸识别模型的路径。你可以使用以下代码进行预准备操作: import cv2 filename = 'OIP-C.jpg' pathface = 'B:\\Python\\Practic\\Face recognition\\cascades\\haarcascade_frontalface_default.xml' 接下来,定义一个函数来进行人脸检测。在这个函数中,你需要加载人脸识别模型并读取待检测的图片。然后,将图片转换为灰度图像,使用人脸识别模型对其进行检测,并将检测到的人脸位置标注在图像上。最后,显示标注后的图像,并保存结果图像。 def detect(filename): face_cascade = cv2.CascadeClassifier(pathface) img = cv2.imread(filename) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.3, 5) for (x, y, w, h) in faces: img = cv2.rectangle(img, (x, y), (x+w, y+h), (255,0,0), 2) cv2.namedWindow('Face recognition') cv2.imshow('Face recognition', img) cv2.imwrite('./Try.jpg', img) cv2.waitKey(0) 最后,调用detect函数并传入待检测的图片文件名即可进行人脸识别。 detect(filename) 以上就是使用OpenCV进行人脸识别Python代码。请确保你已正确安装了OpenCV库,并将人脸识别模型文件(haarcascade_frontalface_default.xml)放置在正确的路径下。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [基于OpenCV-Python实现人脸识别](https://blog.csdn.net/weixin_52978638/article/details/124287279)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值