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模块学习 datetime介绍
Aug 27 Python
Python logging模块学习笔记
May 24 Python
详解Python自建logging模块
Jan 29 Python
Python数据分析之双色球中蓝红球分析统计示例
Feb 03 Python
Python(Django)项目与Apache的管理交互的方法
May 16 Python
python tools实现视频的每一帧提取并保存
Mar 20 Python
Python学习笔记之While循环用法分析
Aug 14 Python
python 追踪except信息方式
Apr 25 Python
Python Matplotlib简易教程(小白教程)
Jul 28 Python
基于python图书馆管理系统设计实例详解
Aug 05 Python
Python实现一个论文下载器的过程
Jan 18 Python
AI:如何训练机器学习的模型
Apr 16 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
Windows下的PHP5.0详解
2006/11/18 PHP
PHP学习笔记之字符串编码的转换和判断
2014/05/22 PHP
Symfony2学习笔记之模板用法详解
2016/03/17 PHP
yii gridview实现时间段筛选功能
2017/08/15 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
完美兼容各大浏览器获取HTTP_REFERER方法总结
2014/06/24 Javascript
javascript中checkbox使用方法实例演示
2015/11/19 Javascript
javascript中new关键字详解
2015/12/14 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
2016/01/14 Javascript
概述一个页面从输入URL到页面加载完的过程
2016/12/16 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
详解Vue使用命令行搭建单页面应用
2017/05/24 Javascript
React学习之事件绑定的几种方法对比
2017/09/24 Javascript
解决Vue不能检测数组或对象变动的问题
2018/02/24 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
2019/04/07 Javascript
基于JavaScript实现贪吃蛇游戏
2020/03/16 Javascript
在win和Linux系统中python命令行运行的不同
2016/07/03 Python
python入门教程之识别验证码
2017/03/04 Python
Python实现学生成绩管理系统
2020/04/05 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
python 中pyqt5 树节点点击实现多窗口切换问题
2019/07/04 Python
Python3并发写文件与Python对比
2019/11/20 Python
Python字节单位转换实例
2019/12/05 Python
Python如何执行系统命令
2020/09/23 Python
python FTP编程基础入门
2021/02/27 Python
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
html5 Web SQL Database 之事务处理函数transaction与executeSQL解析
2013/11/07 HTML / CSS
html5 canvas实现给图片添加平铺水印
2019/08/20 HTML / CSS
英国最出名高街品牌:Forever Unique
2018/02/24 全球购物
乡村文明行动实施方案
2014/03/29 职场文书
产品包装策划方案
2014/05/18 职场文书
商标侵权律师函
2015/05/27 职场文书
python解决12306登录验证码的实现
2021/04/18 Python
Python中for后接else的语法使用
2021/05/18 Python
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL
关于Python中进度条的六个实用技巧分享
2022/04/05 Python