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生成随机验证码的两种方法
Dec 22 Python
Python SQLite3简介
Feb 22 Python
基于python3实现socket文件传输和校验
Jul 28 Python
学习python分支结构
May 17 Python
python绘制地震散点图
Jun 18 Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
Sep 05 Python
Ubuntu中配置TensorFlow使用环境的方法
Apr 21 Python
Python unittest单元测试openpyxl实现过程解析
May 27 Python
pytorch 计算ConvTranspose1d输出特征大小方式
Jun 23 Python
浅析python字符串前加r、f、u、l 的区别
Jan 24 Python
Python使用Kubernetes API访问集群
May 30 Python
python标准库ElementTree处理xml
May 20 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
德生PL990,目前市面上唯一一款便携式插卡蓝牙全波段高性能收音机
2021/03/02 无线电
第六节 访问属性和方法 [6]
2006/10/09 PHP
在线增减.htpasswd内的用户
2006/10/09 PHP
详细解读PHP中接口的应用
2015/08/12 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
php校验公钥是否可用的实例方法
2019/09/17 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
JavaScript 开发规范要求(图文并茂)
2010/06/11 Javascript
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
jQuery对象和Javascript对象之间转换的实例代码
2013/03/20 Javascript
JS匀速运动演示示例代码
2013/11/26 Javascript
js+css实现的简单易用兼容好的分页
2013/12/30 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
JS实现页面超时后自动跳转到登陆页面
2015/01/19 Javascript
JavaScript中利用各种循环进行遍历的方式总结
2015/11/10 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
vue.js中mint-ui框架的使用方法
2017/05/12 Javascript
Puppet的一些技巧
2018/09/17 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
2019/08/23 Javascript
vue插槽slot的简单理解与用法实例分析
2020/03/14 Javascript
解决vue的router组件component在import时不能使用变量问题
2020/07/26 Javascript
vscode 调试 node.js的方法步骤
2020/09/15 Javascript
pyv8学习python和javascript变量进行交互
2013/12/04 Python
python获取文件版本信息、公司名和产品名的方法
2014/10/05 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
2019/05/05 Python
Python完全识别验证码自动登录实例详解
2019/11/24 Python
python多进程使用函数封装实例
2020/05/02 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
澳大利亚冲浪和时尚服装网上购物:SurfStitch
2017/07/29 全球购物
洛杉矶时尚女装系列:J.ING US
2019/03/17 全球购物
2014年依法行政工作总结
2014/11/19 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
Python带你从浅入深探究Tuple(基础篇)
2021/05/15 Python