这里介绍最简单的人脸检测代码,本代码需要用到Opencv和python。
Opencv的安装很方便,命令行输入如下命令:pip install opencv-python
即可下载安装opencv,
检测安装是否成功python环境下运行如下命令:import cv2
整个人脸检测步骤如下:
- 获取待识别图片地址,读取图片
- 图片转化成灰度图(容易计算)
- 创建opencv人脸检测实例,加载相应分类器xml
- 检测图像,设置参数
- 对识别的人脸进行标识
- 显示检测结果(展示图片)
代码如下:
<pre style="margin: 0px; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-weight: 400; font-stretch: inherit; font-size: 18px; line-height: inherit; font-family: inherit; vertical-align: baseline; word-break: break-word; color: rgb(93, 93, 93); letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">
# -*- coding: utf-8 -*-
import cv2
import sys
# Get user supplied values
imagePath = 'dth.png'#待识别的图像
cascPath = "haarcascade_frontalface_default.xml"
# Create the haar cascade
faceCascade = cv2.CascadeClassifier(cascPath)
# Read the image
image = cv2.imread(imagePath)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Detect faces in the image
faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.1,
minNeighbors=5,
minSize=(30, 30)
#flags = cv2.CV_HAAR_SCALE_IMAGE
)
print("Found {0} faces!".format(len(faces)))
# Draw a rectangle around the faces
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.imshow("Faces found", image)
cv2.waitKey(0)
</pre>
其中cascPath =
"haarcascade_frontalface_default.xml" ,
这个xml文件是opencv在github共享出来普适的人脸特征分类器文件,还有很多用于其他检测特征(如微笑检测,上半身检测)的分类器。
分类器下载链接:https://github.com/opencv/opencv/tree/master/data/haarcascades
**如何使用代码**:
复制以上代码,在github下载haarcascade_frontalface_default.xml文件,修改imagePath为你待测的图片地址。
本人利用最近很火的电视剧《都挺好》剧照进行了测试。《都挺好》剧照如下:
![image](https://img.haomeiwen.com/i16749901/b73fd5e222708351?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
运行后,显示结果为:
Found 7 faces !
![image](https://img.haomeiwen.com/i16749901/f15c101ea51dde42?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
虽然结果看起来一般,但是也基本完成了一个人脸检测的功能。
主要因为xml文件是一个普适的数据训练出来的,若想得到更加准确的测试结果,可以自己训练自己创建的数据,来识别特定人群。或者选用深度学习模型来做人脸检测!
**欢迎大家加入小编创建的Python行业交流群,有大牛答疑,有资源共享,有企业招人!是一个非常不错的交流基地!群号:683380553**
网友评论