python 基于dlib库的人脸检测的实现


Posted in Python onNovember 08, 2019

本周暂时比较清闲,可以保持每日一更的速度。

国外身份证项目新增需求,检测出身份证正面的人脸。最开始考虑mobilenet-ssd,经同事提醒,有现成的人脸库dlib,那就用传统方法尝试一下。

dlib安装

dlib的安装小费一波周折,我的python版本是3.6,直接pip install dlib安装失败。https://pypi.org/project/dlib/19.6.0/找到python3.6对应的whl文件下载安装或者直接pip install dlib==19.6.0 提示Successfully installed dlib-19.6.0安装成功。事情没那么简单,import dlib时报错: ImportError: DLL load failed: 找不到指定的模块。

还是版本的问题,查找最新版本的whl :https://pypi.org/simple/dlib/

下载 dlib-19.8.1-cp36-cp36m-win_amd64.whl  然后cd到相应的目录下 pip install dlib-19.8.1-cp36-cp36m-win_amd64.whl

代码

import dlib
import cv2
import os
 
def resize(img, width=None, height=None, inter=cv2.INTER_AREA):
  """
  initialize the dimensions of the input image and obtain
  the image size
  """
 
  dim = None
  (h, w) = img.shape[:2]
 
  if width is None and height is None:
    return img
  if width is None:
    r = height / float(h)
    dim = (int(w * r), height)
  else:
    r = width / float(w)
    dim = (width, int(h * r))
  # resize the image
  resized = cv2.resize(img, dim, interpolation=inter)
  # return the resized image
  return resized
 
# 使用 Dlib 的正面人脸检测器 frontal_face_detector
detector = dlib.get_frontal_face_detector()
 
# 图片所在路径
imgs_path = 'test/'
filelist = os.listdir(imgs_path)
# 使用 detector 检测器来检测图像中的人脸
for img_path in filelist:
  img = cv2.imread(imgs_path + img_path)
  img = resize(img, width=512)
  faces = detector(img, 1)
  print("人脸数 / Faces in all: ", len(faces))
  for i, d in enumerate(faces):
    w = d.right() - d.left()
    h = d.bottom() - d.top()
    d_left = int(d.left() - w * 0.25)
    d_right = int(d.right() + w * 0.25)
    d_top = int(d.top() - w * 0.70)
    d_bottom = int(d.bottom() + w * 0.2)
    print("第", i + 1, "个人脸的矩形框坐标:",
       "left:", d_left, "right:", d_right, "top:", d_top, "bottom:", d_bottom)
    cv2.rectangle(img, tuple([d_left, d_top]), tuple([d_right, d_bottom]), (0, 255, 255), 2)
  cv2.imshow("img", img)
  cv2.waitKey(0)
  cv2.imwrite('./result.jpg',img)

随便网上找了张图测试,效果如下

python 基于dlib库的人脸检测的实现

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的randrange()方法使用教程
May 15 Python
python装饰器实例大详解
Oct 25 Python
浅谈Python2获取中文文件名的编码问题
Jan 09 Python
Python使用numpy模块创建数组操作示例
Jun 20 Python
python三引号输出方法
Feb 27 Python
详解用python自制微信机器人,定时发送天气预报
Mar 25 Python
Python列表与元组的异同详解
Jul 02 Python
python3图片文件批量重命名处理
Oct 31 Python
python支持多线程的爬虫实例
Dec 21 Python
pymysql的简单封装代码实例
Jan 08 Python
pycharm中leetcode插件使用图文详解
Dec 07 Python
python中的3种定义类方法
Nov 27 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
Nov 08 #Python
python实现身份证实名认证的方法实例
Nov 08 #Python
Python Django框架模板渲染功能示例
Nov 08 #Python
Python Django中间件,中间件函数,全局异常处理操作示例
Nov 08 #Python
Django框架下静态模板的继承操作示例
Nov 08 #Python
python中自带的三个装饰器的实现
Nov 08 #Python
python反转列表的三种方式解析
Nov 08 #Python
You might like
PHP生成图像验证码的方法小结(2种方法)
2016/07/18 PHP
PHP加密解密类实例代码
2016/07/20 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
JavaScript实现Sleep函数的代码
2007/03/04 Javascript
JavaScript Cookie的读取和写入函数
2009/12/08 Javascript
浅谈Javascript面向对象编程
2011/11/15 Javascript
JavaScript中的私有/静态属性介绍
2012/07/26 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
jQuery实现的支持IE的html滑动条
2015/03/16 Javascript
JQuery之proxy实现绑定代理方法
2016/08/01 Javascript
AngularJS equal比较对象实例详解
2016/09/14 Javascript
JS实现复制功能
2017/03/01 Javascript
详解Vue.use自定义自己的全局组件
2017/06/14 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
使用vue中的v-for遍历二维数组的方法
2018/03/07 Javascript
vue组件实现弹出框点击显示隐藏效果
2020/10/26 Javascript
Vue中点击active并第一个默认选中功能的实现
2020/02/24 Javascript
Vue组件间的通信pubsub-js实现步骤解析
2020/03/11 Javascript
树莓派中python获取GY-85九轴模块信息示例
2013/12/05 Python
python多线程抓取天涯帖子内容示例
2014/04/03 Python
Python实现保证只能运行一个脚本实例
2015/06/24 Python
Python实现身份证号码解析
2015/09/01 Python
python利用paramiko连接远程服务器执行命令的方法
2017/10/16 Python
python+opencv识别图片中的圆形
2020/03/25 Python
Python range与enumerate函数区别解析
2020/02/28 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
2020/03/09 Python
利用python实现平稳时间序列的建模方式
2020/06/03 Python
Python读取ini配置文件传参的简单示例
2021/01/05 Python
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
大家检讨书5000字
2014/02/03 职场文书
创新型城市实施方案
2014/03/06 职场文书
公务员平时考核实施方案
2014/03/11 职场文书
承兑汇票延期证明
2015/06/23 职场文书
心得体会格式及范文
2016/01/25 职场文书
js Proxy的原理详解
2021/05/25 Javascript
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android