我只用了二十行代码给(都挺好)剧组全部人脸识别了!

这里介绍最简单的人脸检测代码,本代码需要用到Opencv和python。

Opencv的安装很方便,命令行输入如下命令:pip install opencv-python

即可下载安装opencv,

检测安装是否成功python环境下运行如下命令:import cv2

整个人脸检测步骤如下:

  1. 获取待识别图片地址,读取图片
  2. 图片转化成灰度图(容易计算)
  3. 创建opencv人脸检测实例,加载相应分类器xml
  4. 检测图像,设置参数
  5. 对识别的人脸进行标识
  6. 显示检测结果(展示图片)

代码如下:

# -*- 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)

其中cascPath =

“haarcascade_frontalface_default.xml” ,

这个xml文件是opencv在github共享出来普适的人脸特征分类器文件,还有很多用于其他检测特征(如微笑检测,上半身检测)的分类器。

分类器下载链接:https://github.com/opencv/opencv/tree/master/data/haarcascades

如何使用代码

复制以上代码,在github下载haarcascade_frontalface_default.xml文件,修改imagePath为你待测的图片地址。

本人利用最近很火的电视剧《都挺好》剧照进行了测试。《都挺好》剧照如下:

《我只用了二十行代码给(都挺好)剧组全部人脸识别了!》
《我只用了二十行代码给(都挺好)剧组全部人脸识别了!》

运行后,显示结果为:

Found 7 faces !

《我只用了二十行代码给(都挺好)剧组全部人脸识别了!》
《我只用了二十行代码给(都挺好)剧组全部人脸识别了!》

虽然结果看起来一般,但是也基本完成了一个人脸检测的功能。

主要因为xml文件是一个普适的数据训练出来的,若想得到更加准确的测试结果,可以自己训练自己创建的数据,来识别特定人群。或者选用深度学习模型来做人脸检测!

    原文作者:萌新程序员
    原文地址: https://zhuanlan.zhihu.com/p/59709157
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞