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使用CMD模块更优雅的运行脚本
May 11 Python
Python实现求两个csv文件交集的方法
Sep 06 Python
Python3实现发送QQ邮件功能(html)
Dec 15 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
May 24 Python
浅析python的优势和不足之处
Nov 20 Python
Python调用服务接口的实例
Jan 03 Python
python的debug实用工具 pdb详解
Jul 12 Python
python实现倒计时小工具
Jul 29 Python
详解Python3 pickle模块用法
Sep 16 Python
Python编译为二进制so可执行文件实例
Dec 23 Python
Python能做什么
Jun 02 Python
Python Matplotlib绘制等高线图与渐变色扇形图
Apr 14 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
使用 php4 加速 web 传输
2006/10/09 PHP
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
图片onload事件触发问题解决方法
2011/07/31 Javascript
JS实现悬浮移动窗口(悬浮广告)的特效
2013/03/12 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
JS求平均值的小例子
2013/11/29 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
2017/05/26 Javascript
使用clipboard.js实现复制功能的示例代码
2017/10/16 Javascript
vue 路由嵌套高亮问题的解决方法
2018/05/17 Javascript
bootstrap 路径导航 分页 进度条的实例代码
2018/08/06 Javascript
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
2019/03/27 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
Pycharm以root权限运行脚本的方法
2019/01/19 Python
python使用matplotlib绘制雷达图
2019/10/18 Python
Python字典底层实现原理详解
2019/12/18 Python
浅谈python 调用open()打开文件时路径出错的原因
2020/06/05 Python
纯CSS改变webkit内核浏览器的滚动条样式
2014/04/17 HTML / CSS
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
2014/05/07 HTML / CSS
财务助理岗位职责
2013/11/10 职场文书
视光学毕业生自荐书范文
2014/02/13 职场文书
浪费资源的建议书
2014/03/12 职场文书
研究生求职自荐书
2014/06/23 职场文书
2014-2015学年工作总结
2014/11/27 职场文书
2015年幼儿园元旦游艺活动策划书
2014/12/09 职场文书
义诊活动总结
2015/02/04 职场文书
任长霞观后感
2015/06/16 职场文书
小学科学课教学反思
2016/02/23 职场文书
如何做好员工培训计划?
2019/07/09 职场文书
详解Apache SkyWalking 告警配置指南
2021/04/22 Servers
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL