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抓取网页正文的源码
Jun 11 Python
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
Apr 09 Python
python实现统计代码行数的方法
May 22 Python
python使用xlrd与xlwt对excel的读写和格式设定
Jan 21 Python
Python实现将Excel转换为json的方法示例
Aug 05 Python
python实现二叉树的遍历
Dec 11 Python
Django Admin实现三级联动的示例代码(省市区)
Jun 22 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
Jan 05 Python
Python中format()格式输出全解
Apr 12 Python
调用其他python脚本文件里面的类和方法过程解析
Nov 15 Python
python加载自定义词典实例
Dec 06 Python
Python中Pyspider爬虫框架的基本使用详解
Jan 27 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中截取字符串支持utf-8
2007/01/18 PHP
PHP实现MVC开发得最简单的方法――模型
2007/04/10 PHP
php中判断文件存在是用file_exists还是is_file的整理
2012/09/12 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
2014/04/02 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
2019/10/13 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
ajax 文件上传应用简单实现
2009/03/03 Javascript
JavaScript自定义DateDiff函数(兼容所有浏览器)
2012/03/01 Javascript
js获取控件位置以及不同浏览器中的差别介绍
2013/08/08 Javascript
javascript中apply和call方法的作用及区别说明
2014/02/14 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
jQuery实现分章节锚点“回到顶部”动画特效代码
2015/10/23 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
JavaScript正则替换HTML标签功能示例
2017/03/02 Javascript
vue中使用WX-JSSDK的两种方法(推荐)
2020/01/18 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
2020/07/22 Javascript
python非递归全排列实现方法
2017/04/10 Python
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
2018/06/26 Python
python 读取文本文件的行数据,文件.splitlines()的方法
2018/07/12 Python
python得到电脑的开机时间方法
2018/10/15 Python
Python遍历字典方式就实例详解
2019/12/28 Python
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
潘多拉珠宝俄罗斯官方网上商店:PANDORA俄罗斯
2020/09/22 全球购物
证券期货行业个人的自我评价
2013/12/26 职场文书
个人近期表现材料
2014/02/11 职场文书
个人授权委托书范本
2014/04/03 职场文书
祖国在我心中演讲稿600字
2014/05/04 职场文书
学校端午节活动方案
2014/08/23 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
新教师2015年度工作总结
2015/07/22 职场文书
中学教代会开幕词
2016/03/04 职场文书
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android
详细了解java监听器和过滤器
2021/07/09 Java/Android
Win11安装受阻怎么办? Windows11安装问题与解决方案汇总
2021/11/21 数码科技
PO模式在selenium自动化测试框架的优势
2022/03/20 Python