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 28 Python
Python合并字符串的3种方法
May 21 Python
python判断字符串编码的简单实现方法(使用chardet)
Jul 01 Python
python+selenium开发环境搭建图文教程
Aug 11 Python
Python中super函数的用法
Nov 17 Python
Python学习笔记之视频人脸检测识别实例教程
Mar 06 Python
在python tkinter中Canvas实现进度条显示的方法
Jun 14 Python
在Python中画图(基于Jupyter notebook的魔法函数)
Oct 28 Python
python手机号前7位归属地爬虫代码实例
Mar 31 Python
Python sql注入 过滤字符串的非法字符实例
Apr 03 Python
python计算Content-MD5并获取文件的Content-MD5值方式
Apr 03 Python
教你使用Pandas直接核算Excel中快递费用
May 12 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 fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
PHP积分兑换接口实例
2015/02/09 PHP
你不知道的文件上传漏洞php代码分析
2016/09/29 PHP
Jquery 最近浏览过的商品的功能实现代码
2010/05/14 Javascript
jQuery Tools tooltip使用说明
2012/07/14 Javascript
JS+css 图片自动缩放自适应大小
2013/08/08 Javascript
Javascript简单实现可拖动的div
2013/10/22 Javascript
jQuery jcrop插件截图使用方法
2013/11/20 Javascript
在JavaScript中使用timer示例
2014/05/08 Javascript
js面向对象之静态方法和静态属性实例分析
2015/01/10 Javascript
js实现有时间限制消失的图片方法
2015/02/27 Javascript
JS基于cookie实现来宾统计记录访客信息的方法
2015/08/04 Javascript
为什么JavaScript没有块级作用域
2016/05/22 Javascript
jQuery simpleModal插件的使用介绍
2016/08/30 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
js判断iframe中元素是否存在的实现代码
2016/12/24 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
bootstrap表单示例代码分享
2017/05/18 Javascript
ES6新增数据结构WeakSet的用法详解
2017/08/07 Javascript
JavaScript全屏和退出全屏事件总结(附代码)
2017/08/17 Javascript
react高阶组件经典应用之权限控制详解
2017/09/07 Javascript
js实现鼠标移动到图片产生遮罩效果
2017/10/21 Javascript
vue.js前后端数据交互之提交数据操作详解
2018/04/24 Javascript
微信小程序公用参数与公用方法用法示例
2019/01/09 Javascript
layui点击数据表格添加或删除一行的例子
2019/09/12 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
[48:48]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Dream TIME
2014/05/21 DOTA
在python的类中动态添加属性与生成对象
2016/09/17 Python
Python如何调用JS文件中的函数
2019/08/16 Python
Pandas 缺失数据处理的实现
2019/11/04 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
市场营销专科应届生求职信
2013/11/24 职场文书
年级组长自我鉴定
2014/02/22 职场文书
入党综合考察材料
2014/06/02 职场文书
Nginx的反向代理实例详解
2021/03/31 Servers