python中dlib库_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: 找不到指定的模块。

下载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)

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

以上就是本文的全部内容,希望对大家的学习有所帮助

您可能感兴趣的文章:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534834.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php养老院管理系统,XYCMS养老院建站系统 v3.8

XYCMS养老院建站系统是一个专为养老院而设计的养老院建筑系统。中心信息管理:包括基本信息管理,添加,问答中心信息管理新闻动态管理:管理新闻信息内容,管理相关分类,添加或者删除生活环境内容管理&#xff…

php 修改文件访问时间,PHP中获取文件创建日期、修改日期、访问时间的方法

php获取文件创建时间、修改时间常用代码filemtime ( string filename )返回文件上次被修改的时间,出错时返回 FALSE。时间以 Unix 时间戳的方式返回,可用于 date()。例如:$afilemtime("log.txt");echo "修改时间:&…

超过响应缓冲区限制_Nginx如何限制并发连接数和连接请求数?

全网最全1500份Java学习资料、500份BAT面试真题:关注公众号,输入“面试题”,获取提取码!首先讲解两个算发:算法思想是:令牌以固定速率产生,并缓存到令牌桶中;令牌桶放满时&#xff0…

Php公钥加密data是空,php 生成加密公钥加密私钥实例详解

php 生成加密公钥加密私钥实例详解生成公钥私钥 win下必须要openssl.cof支持 liunx一般已自带安装$config array(//"digest_alg" > "sha512","private_key_bits" > 512, //字节数 512 1024 2048 4096 等"private_key_type" >…

python句柄无效_subprocess.Popen 运行windows命令出现“句柄无效”报错的解决方法

【代码笔记】iOS-关于UIFont的一些define一,效果图. 二,工程图. 三,代码. RootViewController.h #import interface RootViewController ...JQuery Datatables Dom 和 Language 参数详细说明http://linleizi.iteye.com/blog/2086435 *********************************** Data …

java日期函数精确到日,java日期时间函数分享

前言:对于新手程序员的我来说,写业务代码是现在的日常,在此过程中经常需要对日期时间进行处理,我挑了几个较有用的日期处理函数分享给大家。正文:1、将某格式的时间字符串转化成毫秒时间戳表示的字符串:pub…

python变量区变量保存与加载_python – Flask:使用全局变量将数据文件加载到内存中...

我有一个大的XML文件,它被打开,加载到内存中,然后由Python类关闭.简化示例如下所示:class Dictionary():def __init__(self,filename):f open(filename)self.contents f.readlines()f.close()def getDefinitionForWord(self,word):# returns a word,using etree p…

php 顺丰接口实例,顺丰BSP接口PHP开发注意事项

1&#xff0c;xml报文不用附加"<?xml version"1.0" encoding"UTF-8" ?>"&#xff0c;不支持&#xff0c;会报格式错误。2&#xff0c;提交服务器时要重点注意。直接使用curl方式的&#xff0c;一定要把数据做http_build_query&#xff0…

跨域产生的原因和解决方法_板式家具开料机加工过程产生崩边原因及解决方法...

家具厂数控开料机加工材料的时候会遇到材料崩边的问题&#xff0c;下面我们系统的分析下产生的原因以及解决的办法产生崩边现象的原因&#xff1f;其一是材料本身问题。目前除了实木家具&#xff0c;目前使用较多的就是 板式贴皮的材料&#xff0c;板材的优点就是标准化生产&am…

facade 门面 php,php设计模式之门面(Facade)模式

该模式属于结构型模式什么是门面模式&#xff1f;定义&#xff1a;门面模式(有时候也称为外观模式)是指提供一个统一的接口去访问多个子系统的多个不同的接口&#xff0c;它为子系统中的一组接口提供一个统一的高层接口。外部与子系统的通信是通过一个门面(Facade)对象进行。其…

架构师一般做到多少岁_《迷茫中的我们该如何突破瓶颈——成长为一名架构师》...

如何成长为一名架构师&#xff1f;架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。一个架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展&#xff0c;为目标客户提供更为全面的需求清单。很多程序员想成为一名架…

php-fpm初始化失败,FPM的初始化 - [ PHP7的内核剖析 ] - 在线原生手册 - php中文网

FPM的初始化接下来看下fpm的启动流程&#xff0c;从main()函数开始&#xff1a;//sapi/fpm/fpm/fpm_main.cint main(int argc, char *argv[]){... //注册SAPI:将全局变量sapi_module设置为cgi_sapi_modulesapi_startup(&cgi_sapi_module);... //执行php_module_staru…

python 高级语言特性_Pytohon学习笔记(一)Python编程语言历史及特性

Python编程语言历史及特性编程语言:用户:问题空间计算机: 解决问题解空间抽象机器代码-->微码编程-->高级语言shell编程:ptyhon控制语言:胶水语言适合领域:web,Django字节码:bytecode面向过程:以指令为中心&#xff0c;由指令处理数据 如何组织代码结局问题面向对象:以数…

php laravel 返回统一格式,封装的统一的Laravel响应类,返回数据类

封装的统一的Laravel返回数据类namespace App\Library;class Response{const OK 0;const BAD_REQUEST 1000;const PARAM_ERROR 1001;const SQL_ERROR 4000;const FORBIDDEN 4003;const SERVER_ERROR 5000;public static $errMsg [self::BAD_REQUEST > 请求错误,self:…

python3连接数据库步骤_Python3连接Mysql8.0遇到的问题及处理步骤

最近在使用Python开发系统&#xff0c;需连接mysql数据库&#xff0c;我用的是Python3连接MySQL8.0&#xff0c;其中老是报错以下问题&#xff1a;网上给了各种各样的方法&#xff0c;大多是通过各种方式修改密码。最简单的方法是更换了root密码的认证方式解决的&#xff0c;新…

360手柄摇杆漂移修复_彻底解决你的Switch手柄摇杆问题,最省钱的完美修复。

我想很多Switch的消费者都遇到了一个问题&#xff0c;用久了之后的手柄失灵&#xff0c;移动不精准&#xff0c;卡顿&#xff0c;自动位移等现象。玩个游戏都非常的糟心。动一下摇杆角色都会自动移动...这些问题的出现主要原因是摇杆内部进了灰尘&#xff0c;才导致各种现象的出…

libzdb 连接mysql,数据库连接池库libzdb使用教程

Libzdb挺强大&#xff0c; 支持Mysql Oracle SQLite PostgreSQL&#xff0c;支持C和C Object C&#xff0c;不能在Window下用(看源码是因为基于Linux线程机制编写实现)。遗憾的是找个资料太费劲&#xff0c;只能到Libzdb官网&#xff1a;点此进入 &#xff0c;今正看着上面英文…

请给出计算231-1的python表达式_【填空题】计算2 32 -1的Python表达式可以书写为____...

【填空题】计算2 32 -1的Python表达式可以书写为____更多相关问题【判断题】军队和国防建设指导思想实行战略转变的实质是:从立足于早打、大打、打核战争的临战准备状况,转到和平时期建设的轨道上来。【单选题】社会学家认为,一门专业必须具有专业特征,护理专业的特征是( )A. 满…

数值分析方程求根实验matlab,数值分析实验之非线性方程求根(MATLAB实现)

一、实验目的1&#xff0e; 了解一般非线性方程的求根是比较复杂的事情&#xff1a;要讨论(或知道)它有无实根&#xff0c;有多少实根&#xff1b;知道求近似根常用的几种方法&#xff0c;每种方法的特点是什么。2&#xff0e; 用通过二分法(区间半分法)、不动点(也Picard)迭代…

python多线程输出_萌新python多线程

刚开始学习多线程的时候闹了个笑话在使用python线程打印东西的时候发现自己定的的线程数据没有打印,找半天都没有找到问题,也没好意思问,自己憋了半天才发现问题!代码如下:import threadingdef SayHi():print(say hi !)def SeyHello():print(say hello !)print(start)threading…