基于dlib的人脸检测识别系列——人脸检测
人脸识别的第一步,人脸检测。本文章主要写运用dlib的人脸检测器,检测人脸,并绘制出人脸框,其中包括dlib库的安装和具体方法代码。一、dlib库的安装这个dlib库的安装烦人的很,老是安装报错。好像是什么环境问题,永远安装不到你的py中。搞不懂,这里用的是离线安装方法。(亲测成功)首先,dlib的需要先安装cmake和boost。直接安装哈然后直接上连接。百度云连接:链接:https://pan
系列文章目录
前言
人脸识别的第一步,人脸检测。本文章主要写运用dlib的人脸检测器,检测人脸,并绘制出人脸框,其中包括dlib库的安装和具体方法代码。
一、dlib库的安装
这个dlib库的安装烦人的很,老是安装报错。好像是什么环境问题,永远安装不到你的py中。搞不懂,这里用的是离线安装方法。(亲测成功)
首先,dlib的需要先安装cmake和boost。直接安装哈
pip install cmake
pip install boost
然后直接上连接。百度云连接:
链接:https://pan.baidu.com/s/1xMo4jFp0ybo192mg5nArlw
提取码:ncxc
下载你对应python版本的dlib。(cp36,cp37,cp38就是对应的你的py3.6,3.7,3.8)
我这里用的是conda,所以在Anaconda Prompt中激活我的python环境。
最后,将你的下载的文件拖入pip install 中
如下操作:
它会自动打印出来后缀。回车即可,就此安装成功。
二、使用步骤
1.引入库
环境:python3.8+opencv-python4.7.0.72
import cv2
import dlib
import numpy as np
import matplotlib.pyplot as plt
2.显示图片函数
代码如下(示例):
def show_image(image,title):
img_RGB = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
plt.title(title)
plt.imshow(img_RGB)
plt.axis("off")
显示代码,需要理解的就是在opencv中是BGR显示的,我们需要转换一下,转成RGB,这样不至于你输出的时候变得蓝蓝的。
3.方法
在这之前,我们可以捋一下思路。我们要做的事情很简单,就是识别到一张图片的人脸,然后用一个矩形框圈住人脸,最后显示出来即可。
本次需要识别的图像如下:
(1)那么怎么才能识别到人脸呢?
本次我们使用的是dlib库的方法,也就是要调用dlib库中的人脸检测器。
dlib.get_frontal_face_detector()
调用后,我们可以获得到人脸的坐标位置,那么接下来就很简单了,根据坐标绘制出矩形框,最后显示输出即可。
(2)绘制出人脸框,绘制代码如下:
cv2.rectangle(image,(face.left(),face.top()),(face.right(),face.bottom()),(255,0,0),2)
这里需要了解的是,face.left(),...,..,那些的含义?
绘制矩形框我们需要两个坐标,上坐标和下坐标,得到这两个坐标即可绘制出。
face.left()左,top()上。
face.right()右bottom()下。
就是左上角,和右下角的意思。可以参考我上次的文章
(3)最后就是创建画布,显示图片了
plt.figure(figsize=(9,6))
plt.suptitle("face detection with dlib",fontsize=14,fontweight="bold")
三、代码
代码如下:
import cv2
import dlib
import matplotlib.pyplot as plt
# 2 方法:显示图片
def show_image(image,title):
img_RGB = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
plt.title(title)
plt.imshow(img_RGB)
plt.axis("off")
# 3 绘制人脸矩形
def plot_rectangle(image,faces):
for face in faces:
cv2.rectangle(image,(face.left(),face.top()),(face.right(),face.bottom()),(255,0,0),2)
return image
def main():
# 4 读取图片
img = cv2.imread("face.jpeg")
# 5 灰度
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# 6 调用dlib库中的检测器
detector = dlib.get_frontal_face_detector()
dets_result = detector(gray,1) # 1: 将图片放大一倍
# 7 绘制框
img_result = plot_rectangle(img.copy(),dets_result)
# 8 创建画布
plt.figure(figsize=(9,6))
plt.suptitle("face detection with dlib",fontsize=14,fontweight="bold")
# 9 显示最终结果
show_image(img_result,"face detection")
plt.show()
if __name__ == '__main__':
main()
结果如下:
总结
以上就是今天要讲的内容。总体来说很简单。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)