Python第三方库face_recognition在windows上的安装过程


Posted in Python onMay 03, 2019

实际上face_recognition这个项目尤其是dlib更适用于Linux系统。经过我的测试,在性能方面,编译同样规格的项目,这个工具在Windows 10 上大约是Ubuntu上的四分之一。但是在这两者之间我没有看到在其他方面有什么差别。

我使用本教程将这些工具安装到Windows10上,更近的版本也可能正常运行。

  • 安装了C/C++ 编译器的Microsoft Visual Studio 2015
  • Boost 库,V1.63或者更近的版本
  • Python3
  • CMake,Windows安装时要将其路径加入环境变量

下载和安装 Scipy 和 numpy+mkl (必须是 mkl 版本),下载链接,注意要基于你的Python版本选择合适的版本下载。

根据你当前的MSVC版本下载对应的 Boost 库(库的源代码或者是二进制release版本),下载链接。

如果下载的是二进制版本则调到第4步,否则按照如下的过程编译 Boost 库:

进入C:\local\boost_1_XX_X(X 代表你当前的Boost版本)提取 Boost 源文件

根据以下格式新建系统变量:

Name: VS140COMNTOOLS

Value: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\ (此处为任何你安装MSVC的路径)

打开Visual Studio 2015自带的开发人员工具类似于“VS2015 开发人员命令提示”,进入 Boost 目录编译 Boost 库:

C:\boost_1_XX_X>bootstrap 这一步执行完之后会自动生成b2.exe文件

C:\boost_1_XX_X>b2 -a ?with-python address-model=64 toolset=msvc runtime-link=static 这一步编译需要较长的时间,请耐心等待

4.Boost 库成功编译后,编译生成的文件位于 stage 这个文件夹中。

如果你已经编译了 Boost 请跳过这一步。如果你已经下载了二进制的release版本,则进入Boost目录 C:\local\boost_1_XX_X

获取最新版本的 dlib 包,下载链接

进入 dlib 的目录,打开 cmd ,运行如下的命令编译 dlib

将以下两个参数加入环境变量

BOOST_ROOT=C:\local\boost_X_XX_X
BOOST_LIBRARYDIR=C:\local\boost_X_XX_X\stage\lib

然后再运行如下代码:

python setup.py install ?yes USE_AVX_INSTRUCTIONS or python setup.py install ?yes

USE_AVX_INSTRUCTIONS ?yes DLIB_USE_CUDA

现在你可以使用 import dlib进入Python脚本

你可以使用 pip show dlib查看当前 dlib 的版本

现在你可以使用 pip install face_recognition安装face_recognition

Enjoy!

dlib安装也可以使用:

conda install -c menpo dlib=18.18
其中18.18为dlib的版本号

如果安装成功,运行以下代码就可以正常运行了。

# -*- coding: utf-8 -*-
"""
Created on Sat Sep 23 21:15:42 2017

@author: Romji
"""

import face_recognition
import cv2
import sys
def face_reg(file):
  # 读取图片并识别人脸
  img = face_recognition.load_image_file(file)
  face_locations = face_recognition.face_locations(img)
  print(face_locations)

  # 调用opencv函数显示图片
  img = cv2.imread(file)
  cv2.imshow("原图", img)

  # 遍历每个人脸,并标注
  faceNum = len(face_locations)
  for i in range(0, faceNum):
    top = face_locations[i][0]
    right = face_locations[i][1]
    bottom = face_locations[i][2]
    left = face_locations[i][3]

    start = (left, top)
    end = (right, bottom)

    color = (55,255,155)
    thickness = 3
    cv2.rectangle(img, start, end, color, thickness)

  # 显示识别结果
  cv2.imshow("识别", img)

  cv2.waitKey(0)
  cv2.destroyAllWindows()

if __name__ == '__main__':
  filename = sys.argv[1]
  face_reg(filename)

将程序保存为test.py,在程序根目录下保存一张图片进行测试(假设保存的为1.jpg)
进入目录输入python test.py 1.jpg,即可看到效果。

Python 相关文章推荐
python处理圆角图片、圆形图片的例子
Apr 25 Python
python实现爬虫下载美女图片
Jul 14 Python
Python简单获取自身外网IP的方法
Sep 18 Python
python编程实现希尔排序
Apr 13 Python
关于Python如何避免循环导入问题详解
Sep 14 Python
Python基于多线程操作数据库相关问题分析
Jul 11 Python
5分钟 Pipenv 上手指南
Dec 20 Python
python解析yaml文件过程详解
Aug 30 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
Apr 08 Python
Python Socket TCP双端聊天功能实现过程详解
Jun 15 Python
python如何输出反斜杠
Jun 18 Python
Python如何实现Paramiko的二次封装
Jan 30 Python
Python人脸识别第三方库face_recognition接口说明文档
May 03 #Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
May 03 #Python
利用python将图片版PDF转文字版PDF
May 03 #Python
Python3.0中普通方法、类方法和静态方法的比较
May 03 #Python
Python Flask框架模板操作实例分析
May 03 #Python
Python Flask框架扩展操作示例
May 03 #Python
Python安装Flask环境及简单应用示例
May 03 #Python
You might like
人族 Terran 基本策略
2020/03/14 星际争霸
ajax取消挂起请求的处理方法
2013/03/18 PHP
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
php找出指定范围内回文数且平方根也是回文数的方法
2015/03/23 PHP
laravel实现按时间日期进行分组统计方法示例
2019/03/23 PHP
JavaScript 实现??打印?理
2007/04/28 Javascript
小型js框架veryide.librar源代码
2009/03/05 Javascript
保证JavaScript和Asp、Php等后端程序间传值编码统一
2009/04/17 Javascript
js实现按Ctrl+Enter发送效果
2014/09/18 Javascript
一个不错的js html页面倒计时可精确到秒
2014/10/22 Javascript
node.js中的path.normalize方法使用说明
2014/12/08 Javascript
jquery实现的动态回到顶部特效代码
2015/10/28 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
2016/03/16 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
2017/08/24 Javascript
详解vue2 $watch要注意的问题
2017/09/08 Javascript
jquery学习笔记之无new构建详解
2017/12/07 jQuery
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
使用Python读写文本文件及编写简单的文本编辑器
2016/03/11 Python
详解python3实现的web端json通信协议
2016/12/29 Python
Python简单读写Xls格式文档的方法示例
2018/08/17 Python
对python:print打印时加u的含义详解
2018/12/15 Python
Python3实现的反转单链表算法示例
2019/03/08 Python
Python学习笔记之函数的定义和作用域实例详解
2019/08/13 Python
Python&&GDAL实现NDVI的计算方式
2020/01/09 Python
Python3 io文本及原始流I/O工具用法详解
2020/03/23 Python
Django crontab定时任务模块操作方法解析
2020/09/10 Python
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
违纪检讨书2000字
2014/02/08 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书