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使用django获取用户IP地址的方法
May 11 Python
python绘图方法实例入门
May 19 Python
Python编程生成随机用户名及密码的方法示例
May 05 Python
代码讲解Python对Windows服务进行监控
Feb 11 Python
Django中针对基于类的视图添加csrf_exempt实例代码
Feb 11 Python
给大家整理了19个pythonic的编程习惯(小结)
Sep 25 Python
python进程间通信Queue工作过程详解
Nov 01 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
Nov 11 Python
python实现简易淘宝购物
Nov 22 Python
django和flask哪个值得研究学习
Jul 31 Python
Pytest测试框架基本使用方法详解
Nov 25 Python
Python函数中的不定长参数相关知识总结
Jun 24 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
PHP新手上路(八)
2006/10/09 PHP
php microtime获取浮点的时间戳
2010/02/21 PHP
PHP导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
PHP中strtotime函数使用方法详解
2011/11/27 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
Zend Framework框架Smarty扩展实现方法
2016/03/22 PHP
js 浮动层菜单收藏
2009/01/16 Javascript
script标签的 charset 属性使用说明
2010/12/04 Javascript
JavaScript匿名函数与委托使用示例
2014/07/22 Javascript
jQuery中queue()方法用法实例
2014/12/29 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
2015/03/26 Javascript
JS如何实现文本框随文本的长度而增长
2015/07/30 Javascript
基于jQuery实现的美观星级评论打分组件代码
2015/10/30 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
2015/12/18 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
2016/09/14 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
2018/02/23 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
JS实现时间校验的代码
2020/05/25 Javascript
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
Python使用os模块和fileinput模块来操作文件目录
2016/01/19 Python
Python实现基于二叉树存储结构的堆排序算法示例
2017/12/08 Python
Python字典的核心底层原理讲解
2019/01/24 Python
Python字符串中添加、插入特定字符的方法
2019/09/10 Python
python批量修改xml属性的实现方式
2020/03/05 Python
如何使用Cython对python代码进行加密
2020/07/08 Python
css3实现背景动态渐变效果
2019/12/10 HTML / CSS
医院护士求职自荐信格式
2013/09/21 职场文书
经典商业广告词
2014/03/13 职场文书
爬山的活动方案
2014/08/16 职场文书
优秀教师自我评价范文
2014/09/27 职场文书
2014财务年度工作总结
2014/11/11 职场文书
工程服务质量承诺书
2015/04/29 职场文书
幼儿园教研工作总结2015
2015/05/12 职场文书
董事长致辞
2015/07/29 职场文书
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL