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 相关文章推荐
win7安装python生成随机数代码分享
Dec 27 Python
python列表的常用操作方法小结
May 21 Python
Django入门使用示例
Dec 12 Python
Python中的默认参数实例分析
Jan 29 Python
python使用xslt提取网页数据的方法
Feb 23 Python
使用python将时间转换为指定的格式方法
Nov 12 Python
Python实现多属性排序的方法
Dec 05 Python
使用python分析统计自己微信朋友的信息
Jul 19 Python
python retrying模块的使用方法详解
Sep 25 Python
python3 pillow模块实现简单验证码
Oct 31 Python
python连接打印机实现打印文档、图片、pdf文件等功能
Feb 07 Python
python 生成任意形状的凸包图代码
Apr 16 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
教你如何把一篇文章按要求分段
2006/10/09 PHP
php中引用符号(&)的使用详解
2013/11/13 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
四种php中webservice实现的简单架构方法及实例
2015/02/03 PHP
ThinkPHP数据操作方法总结
2015/09/28 PHP
php 三大特点:封装,继承,多态
2017/02/19 PHP
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
jQuery的链式调用浅析
2010/12/03 Javascript
jQuery 名称冲突的解决方法
2011/04/08 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
2013/06/14 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
理解和运用JavaScript的闭包机制
2015/08/13 Javascript
基于jQuery实现点击弹出层实例代码
2016/01/01 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
2016/07/18 Javascript
Javascript中apply、call、bind的巧妙使用
2016/08/18 Javascript
Ajax与服务器(JSON)通信实例代码
2016/11/05 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
原生js实现简单的焦点图效果实例
2017/12/14 Javascript
详解如何在vue项目中使用eslint+prettier格式化代码
2018/11/10 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
Python群发邮件实例代码
2014/01/03 Python
Python操作列表之List.insert()方法的使用
2015/05/20 Python
简单谈谈Python中函数的可变参数
2016/09/02 Python
Python切换pip安装源的方法详解
2016/11/18 Python
python样条插值的实现代码
2018/12/17 Python
pandas中DataFrame修改index、columns名的方法示例
2019/08/02 Python
Python小程序之在图片上加入数字的代码
2019/11/26 Python
python实现随机加减法生成器
2020/02/24 Python
django模型类中,null=True,blank=True用法说明
2020/07/09 Python
Django model class Meta原理解析
2020/11/14 Python
迪卡侬波兰体育用品商店:Decathlon波兰
2020/03/31 全球购物
Jar包的作用是什么
2014/03/30 面试题
毕业生爱心捐书倡议书
2015/04/27 职场文书
go语言中json数据的读取和写出操作
2021/04/28 Golang
Zabbix对Kafka topic积压数据监控的问题(bug优化)
2022/07/07 Servers