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 相关文章推荐
django项目运行因中文而乱码报错的几种情况解决
Nov 07 Python
深入理解python中函数传递参数是值传递还是引用传递
Nov 07 Python
几种实用的pythonic语法实例代码
Feb 24 Python
Python读写/追加excel文件Demo分享
May 03 Python
Python sorted函数详解(高级篇)
Sep 18 Python
对python以16进制打印字节数组的方法详解
Jan 24 Python
Python中正则表达式的用法总结
Feb 22 Python
python如何实现从视频中提取每秒图片
Oct 22 Python
将python文件打包exe独立运行程序方法详解
Feb 12 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
Feb 17 Python
在django admin中配置搜索域是一个外键时的处理方法
May 20 Python
python实现双向链表原理
May 25 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
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
找到一点可怜的关于dojo资料,谢谢作者!
2006/12/06 Javascript
Jquery中获取iframe的代码
2011/01/11 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
jquery带动画效果幻灯片特效代码
2015/08/27 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
2016/06/07 Javascript
基于jQuery的AJAX和JSON实现纯html数据模板
2016/08/09 Javascript
Vue表单实例代码
2016/09/05 Javascript
关于不同页面之间实现参数传递的几种方式讨论
2017/02/13 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
Vue render深入开发讲解
2018/04/13 Javascript
OpenLayers3加载常用控件使用方法详解
2020/09/25 Javascript
复习Python中的字符串知识点
2015/04/14 Python
基于Python代码编辑器的选用(详解)
2017/09/13 Python
windows环境下tensorflow安装过程详解
2018/03/30 Python
python实现字符串加密 生成唯一固定长度字符串
2019/03/22 Python
Python检测数据类型的方法总结
2019/05/20 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
2019/10/11 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
2019/11/15 Python
奥地利顶级内衣丝袜品牌英国站:Wolford英国
2016/08/29 全球购物
全球最大的生存食品、水和装备专用在线市场:BePrepared.com
2020/01/02 全球购物
教师评优的个人自我评价分享
2013/09/19 职场文书
高中生的自我鉴定范文
2014/01/24 职场文书
中学生班主任评语
2014/01/30 职场文书
修理厂厂长岗位职责
2014/01/30 职场文书
高中学生干部学习的自我评价
2014/02/21 职场文书
《荷花》教学反思
2014/04/16 职场文书
家长通知书家长评语
2014/04/17 职场文书
见习报告格式要求
2014/11/04 职场文书
2014年教师教学工作总结
2014/11/08 职场文书
2014年保洁员工作总结
2014/11/19 职场文书
中职班主任培训心得体会
2016/01/07 职场文书
golang 实现时间戳和时间的转化
2021/05/07 Golang
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers