python 基于dlib库的人脸检测的实现
作者:我永远不知道我是谁 发布时间:2022-08-23 22:59:07
标签:python,dlib,人脸检测
本周暂时比较清闲,可以保持每日一更的速度。
国外身份证项目新增需求,检测出身份证正面的人脸。最开始考虑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)
随便网上找了张图测试,效果如下
来源:https://blog.csdn.net/weixin_42486139/article/details/102931386
0
投稿
猜你喜欢
- 在看到7yue博客——“换手来用”的思考 有这么一句话:RIA是一个更趋向于“体验”设计的领域,不仅仅包括“开发人员”,还包括“设计人员”,
- 1、页签的表达。页签表达很清晰,当前页签突出,且层级包涵关系明确;看下图,一目了然的感觉,不用疑惑我在那部分里。不信?拿当当的对比一下,你感
- php遍历目录和文件的场景在很多时候都能用到,遍历目录方法的方法有好几种,那么应该使用
- 很久没有上过天极网,今天偶然兴起跑上去看了一下,看到消息说天极网深圳站隆重上线,于是也顺便去溜了一把,打开页面的时候差点有种不知所措的感觉,
- Abs (数值)绝对值。一个数字的绝对值是它的正值。空字符串 (null) 的绝对值,也是空字符串。未初始化的变数,其绝对为 0例子:ABS
- 下午有同学Python学习群里说,使用pyinstaller打包源码时,因为代码中使用了图像、音频、视频等资源文件,无法将程序打包成单一的可
- 在CSS森林群里讨论一个margin的问题中无意间发现overflow也可以用来清除浮动,嘿嘿,这个方法不单使用简单,而且FF、OP、IE7
- 内容适应形式学习了死猫的文章,我今天也来说说有关内容和容器的关系。看标题你也许觉得有些囧,它和上一篇《形式追随内容?》看起来相反,而且好像从
- 1. 停应用层的各种程序。 2. 停oralce的监听进程: $lsnrctl stop 3. 在独占的系统用户下,备份控制文件: SQL&
- 过去一段时间人们似乎又非常热衷于探讨网络文档的印刷格式,涌现了很多与之相关的技术与理论资料,其中相当重要的一个领域就是关于印刷中字号和行高的
- 到目前为止,我已经开发了两个HTML编辑器了,一个用在公司的CMS项目,另一个用在这个Blog(TidyEditor,暂时没有单独发布)。下
- poplib模块接收邮件python的poplib模块是用来从pop3收取邮件的,也可以说它是处理邮件的第一步。POP3协议并不复杂,它也是
- Python慢的重要原因:1、python是动态性语言不是静态性语言在python程序执行的时候,编译器不知道变量的类型。2、python是
- 我希望大家看到该标题就能让想象到它的功能: 1、WITH TEMPL
- 字符串类型代码的执行字符串类型代码的执行函数有三个,都是Python的内置函数。eval()执行字符串类型的代码,并返回最终结果。exec(
- 1、什么是AspJpeg?AspJpeg是一款功能强大的基于Microsoft IIS环境的图片处理组件,AspJpeg可以使用很少的代码在
- 本文实例讲述了Python3实现将文件归档到zip文件及从zip文件中读取数据的方法。分享给大家供大家参考。具体实现方法如下:'
- 读取docx文档使用的包是python-docx1. 安装python-docx包sudo pip install python-docx2
- strSourceFile = Server.MapPath(dataXML&"/Advertisement/"
- 新闻系统,相册系统可以用用哦,简单实用,有兴趣的可以自己扩充!^_^相册截图:<?xml version="1.0"