pythondlib使用(dlib库,怎么在python中安装)

1.dlib库,怎么在python中安装

这几天刚好用到Python,其中用到了Dlib库的人脸对齐算法。python中需要用到import dlib.pyd文件,这个文件需要用python对dlib源码进行编译生成。

具体的生成步骤如下:

1. 安装boost库

本人用的是boost_1_61_0版本,在这里简单说下安装步骤,具体的方法可以参考网上其它人的博客。

也可参考本文博文《windows下使用bjam安装Boost》。安装完成之后,记得配置环境变量。

2. 用python的CMD窗口,进入到dlib库的目录下,输入命令:python setup.py install.

如果提前配置好了boost库,并且把生成的boost_python-vc120-mt-1_61.dll和boost_python-vc120-mt-gd-1_61.dll两个文件放到python目录下。

还需要配置cmake的环境变量,../cmake/bin添加在系统环境变量path里,否则出错:cannot find cmake in the path.

成功编译后,会在../dlib/dist/dlib/目录下找到生成的dlib.pyd文件,把该文件拷贝放到python目录下的Lib\site-packages\下面,这样就完成了python编译dlib库的工作。

注意:在用python进行dlib编译时,可能因为python版本的问题,在Lib\distutils\log.py文件中编译出错

UnicodeEncodeError: 'gbk' codec can't encode character u'\x9' in position。的问题。

stream.write('%s\n' % msg) ///源文件

修改方法:stream.write('%s\n' % msg.decode('gbk')),即可编译通过。这是python2.7版本中的gbk和unicode编解码的原因造成的。

注意:上面的方法本人成功编译过一次,但是后来又有问题。总是显示"Could Not Found Boost."(期间卸载了电脑上的vs2008和vs2010,仅保留vs2013).

后来,借鉴了其他网友的方法如下:

首先,添加系统变量 BOOST_ROOT = D:\boost_1_59_0 和 BOOST_LIBRARYDIR = D:\boost_1_59_0\stage\lib。然后打开cmd,进入到boost目录,输入以下指令编译python library(我的python是32位,因此address-model=32):

编译python库生成两个lib文件:libboost_python-vc120-mt-s-1_61和libboost_python-vc120-mt-sgd-1_61,复制到。\stage\lib目录下面。

再键入命令:python setup.py install,显示如下:

不过按下面这种方式编译dlib,对于32位的笔记本需要把stream.write('%s\n' % msg.decode('gbk'))恢复为原来的stream.write('%s\n' % msg). 而在64位的PC机上,保留下面的修改的方法:stream.write('%s\n' % msg.decode('gbk'))stream.flush()并且在python的Lib\site-packages文件夹下新建一个sitecustomize.py,内容为:import sys

reload(sys)

sys.setdefaultencoding('utf8') #set default encoding to utf-8

两台机器上都可以编译成功。

Ps:在win7系统下用python编译dlib,花了我两天时间去琢磨调试,上面的经验需要的朋友请拿去进一步整理,以免浪费不必好的时间。有问题的童鞋请在下面留言。

2.如何线上部署用python基于dlib写的人脸识别算法

python使用dlib进行人脸检测与人脸关键点标记Dlib简介:首先给大家介绍一下DlibDlib是一个跨平台的C++公共库,除了线程支持,网络支持,提供测试以及大量工具等等优点,Dlib还是一个强大的机器学习的C++库,包含了许多机器学习常用的算法。

同时支持大量的数值算法如矩阵、大整数、随机数运算等等。Dlib同时还包含了大量的图形模型算法。

最重要的是Dlib的文档和例子都非常详细。Dlib主页:这篇博客所述的人脸标记的算法也是来自Dlib库,Dlib实现了One Millisecond Face Alignment with an Ensemble of Regression Trees中的算法这篇论文非常出名,在谷歌上打上One Millisecond就会自动补全,是CVPR 2014(国际计算机视觉与模式识别会议)上的一篇国际顶级水平的论文。

毫秒级别就可以实现相当准确的人脸标记,包括一些半侧脸,脸很不清楚的情况,论文本身的算法十分复杂,感兴趣的同学可以下载看看。Dlib实现了这篇最新论文的算法,所以Dlib的人脸标记算法是十分先进的,而且Dlib自带的人脸检测库也很准确,我们项目受到硬件所限,摄像头拍摄到的画面比较模糊,而在这种情况下之前尝试了几个人脸库,识别率都非常的低,而Dlib的效果简直出乎意料。

相对于C++我还是比较喜欢使用python,同时Dlib也是支持python的,只是在配置的时候碰了不少钉子,网上大部分的Dlib资料都是针对于C++的,我好不容易才配置好了python的dlib,这里分享给大家:Dlib for python 配置:因为是用python去开发计算机视觉方面的东西,python的这些科学计算库是必不可少的,这里我把常用的科学计算库的安装也涵盖在内了,已经安装过这些库的同学就可以忽略了。我的环境是Ubuntu14.04:大家都知道Ubuntu是自带python2.7的,而且很多Ubuntu系统软件都是基于python2.7的,有一次我系统的python版本乱了,我脑残的想把python2.7卸载了重装,然后……好像是提醒我要卸载几千个软件来着,没看好直接回车了,等我反应过来Ctrl + C 的时候系统已经没了一半了…所以我发现想要搞崩系统,这句话比rm -rf 还给力…sudo apt-get remove python2.71首先安装两个python第三方库的下载安装工具,ubuntu14.04好像是预装了easy_install以下过程都是在终端中进行:1.安装pipsudo apt-get install python-pip12.安装easy-installsudo apt-get install python-setuptools13.测试一下easy_install有时候系统环境复杂了,安装的时候会安装到别的python版本上,这就麻烦了,所以还是谨慎一点测试一下,这里安装一个我之前在博客中提到的可以模拟浏览器的第三方python库测试一下。

sudo easy_install Mechanize14.测试安装是否成功在终端输入python进入python shellpython1进入python shell后import一下刚安装的mechanize>>>import mechanize1没有报错,就是安装成功了,如果说没有找到,那可能就是安装到别的python版本的路径了。同时也测试一下PIL这个基础库>>>import PIL1没有报错的话,说明PIL已经被预装过了5.安装numpy接下来安装numpy首先需要安装python-dev才可以编译之后的扩展库sudo apt-get install python-dev1之后就可以用easy-install 安装numpy了sudo easy_install numpy1这里有时候用easy-install 安装numpy下载的时候会卡住,那就只能用 apt-get 来安装了:sudo apt-get install numpy1不推荐这样安装的原因就是系统环境或者说python版本多了之后,直接apt-get安装numpy很有可能不知道装到哪个版本去了,然后就很麻烦了,我有好几次遇到这个问题,不知道是运气问题还是什么,所以风险还是很大的,所以还是尽量用easy-install来安装。

同样import numpy 进行测试python>>>import numpy1234没有报错的话就是成功了下面的安装过程同理,我就从简写了,大家自己每步别忘了测试一下6.安装scipysudo apt-get install python-scipy17.安装matplotlibsudo apt-get install python-matplotlib18.安装dlib我当时安装dlib的过程简直太艰辛,网上各种说不知道怎么配,配不好,我基本把stackoverflow上的方法试了个遍,才最终成功编译出来并且导入,不过听说18.18更新之后有了setup.py,那真是极好的,18.18我没有亲自配过也不能乱说,这里给大家分享我配置18.17的过程吧:1.首先必须安装libboost,不然是不能使用.so库的sudo apt-get install libboost-python-dev cmake12.到Dlib的官网上下载dlib,会下载下来一个压缩包,里面有C++版的dlib库以及例子文档,Python dlib库的代码例子等等我使用的版本是dlib-18.17,大家也可以在我这里下载:之后进入python_examples下使用bat文件进行编译,编译需要先安装libboost-python-dev和cmakecd to dlib-18.17/python_examples./compile_dlib_python_module.bat 123之后会得到一个dlib.so,复制到dist-packages目录下即可使用这里大家也可以直接用我编译好的.so库,但是也必须安装libboost才可以,不然python是不能调用so库的,下载地址:将.so复制到dist-packages目录下sudo cp dlib.so /usr/local/lib/python2.7/dist-packages/1最新的dlib18.18好像就没有这个bat文件了,取而代之的是一个setup文件,那么安装起来应该就没有这么麻烦了。

3.如何使用dlib库

1.运行D:\搜狗高速下载\cmake-3.4.3-win32-x86\bin路径下的cmake-gui.exe并配置编译路径where is the source code 选取 D:\搜狗高速下载\dlib-18.18\dlib-18.18\dlib (一般都是选CMakeLists.txt文件所在的路径)where to build the binaries 选取 D:/dlib_building (新建文件夹)然后点击Configure按钮,我们是vs2008,所以选visual studio 9 2008完成后下面会出现这样的提示然后点击Genrate按钮,等待进度条完成。

。!!!2.编译dlib,使用vs2008用vs2008打开D:\dlib_building\dlib.sln直接运行,就会生成Debug/Release文件夹,里面有我们要的dlib库文件3.测试新建一个win32工程添加dlib的include路径到vs2008把dlib.lib放到工程路径下(或者添加lib路径到vs2008也可以)我用D:\搜狗高速下载\dlib-18.18\dlib-18.18\examples\3d_point_cloud_ex.cpp来测试-----------------------------------------下面是代码----------------------------------------// The contents of this file are in the public domain. See LICENSE_FOR_EXAMPLE_PROGRAMS.txt/*This is an example illustrating the use of the perspective_window toolin the dlib C++ Library. It is a simple tool for displaying 3D point clouds on the screen.*/#include "stdafx.h"#include #include #include using namespace dlib;using namespace std;#pragma comment(lib,"dlib.lib")// ----------------------------------------------------------------------------------------int main(){// Let's make a point cloud that looks like a 3D spiral.std::vector points;dlib::rand rnd;for (double i = 0; i < 20; i+=0.001){// Get a point on a spiraldlib::vector val(sin(i),cos(i),i/4);// Now add some random noise to itdlib::vector temp(rnd.get_random_gaussian(),rnd.get_random_gaussian(),rnd.get_random_gaussian());val += temp/20;// Pick a color based on how far we are along the spiralrgb_pixel color = colormap_jet(i,0,20);// And add the point to the list of points we will displaypoints.push_back(perspective_window::overlay_dot(val, color));}// Now finally display the point cloud.perspective_window win;win.set_title("perspective_window 3D point cloud");win.add_overlay(points);win.wait_until_closed();}// ----------------------------------------------------------------------------什么都没改,直接就可以出效果了,一个用鼠标控制的3D图像效果。

4.Python的Dlib安装时一直出现找不到boost怎么解决

刚刚在 macOS 遇到了类似问题并有了一个解决方案:解决 macOS 下 Python 安装 Dlib 的问题:Cmake 找不到 boost-pythonLinux 以及 其他 类 Unix 系统可能都可以参考上面在 macOS High Sierra 下的思路来通过设定 ~/.bashprofile 里面的 CMAKE_PREFIX_PATH 指向 boost 安装路径来解决这个问题。

现在我正在Windows虚拟机里面测试,发现似乎也是 cmake 没有设定 boost 位置导致的。我尝试一下用类似方法来解决,然后把细节过程截图发上来。

到Python Extension Packages for Windows下载对应系统版本的 boost python 的 whl:点击此链接去下载 CMake 安装包点击此链接去下载 Boost C++ 二进制安装包下载之后双击运行安装到默认位置;1 然后到安装目录,找到bootstrap.bat,双击运行;2 接下来在终端(CMD 或者 Powershell)里面运行:b2 install --prefix=PREFIX 3 这里的 PREFIX 是一个目录位置,用来安装 Boost.Build;4 如果安装完成如果没有报错,接下来还在 boost 所在目录 运行b2 -a --with-python address-model=64 toolset=msvc runtime-link=static5 如果上一步还是没有报错,接下来吧设置环境变量:BOOST_ROOT=C:\local\boost_1_65_1BOOST_LIBRARYDIR=C:\local\boost_1_65_1\stage\lib上面这些内容部分参考了 BOOST 官方文档的内容:Getting Started on Windows上述步骤完成之后,使用 pip install dlib 来安装吧.我自己在 Windows 7 32bit 系统下测到一半提示编译错误,不过能确定的是上面这些步骤都没问题了,算了,我懒得折腾了,以上内容供参考了。希望大家都安装顺利,另外开发机还是 类 Unix 系统好配置啊。

5.怎么使用 python quantlib

我们看到得到了我们想要的结果,服务端server将pyth.py的输出返回给了client。

现在我们来考虑第三个问题——重定向对标准IO流有什么影响?一个IO流是由一个FILE对象来管理的,FILE对象通常是一个结构,它包含了标准IO库为管理该流的所需要的所有信息,包括:用于实际I/O的文件描述符、指向用于该流缓冲区的指针、缓冲区的长度、当前在缓冲区中的字符数以及出错标志等等——摘自apue

下面通过图5来说明重定向与标准IO流的关系。

6.Python的Dlib安装时一直出现找不到boost怎么解决

刚刚在 macOS 遇到了类似问题并有了一个解决方案:解决 macOS 下 Python 安装 Dlib 的问题:Cmake 找不到 boost-python

Linux 以及 其他 类 Unix 系统可能都可以参考上面在 macOS High Sierra 下的思路来通过设定 ~/.bashprofile 里面的 CMAKE_PREFIX_PATH 指向 boost 安装路径来解决这个问题。

现在我正在Windows虚拟机里面测试,发现似乎也是 cmake 没有设定 boost 位置导致的。

我尝试一下用类似方法来解决,然后把细节过程截图发上来。

到Python Extension Packages for Windows

下载对应系统版本的 boost python 的 whl:

点击此链接去下载 CMake 安装包

点击此链接去下载 Boost C++ 二进制安装包

下载之后双击运行安装到默认位置;

1 然后到安装目录,找到bootstrap.bat,双击运行;

2 接下来在终端(CMD 或者 Powershell)里面运行:

b2 install --prefix=PREFIX

3 这里的 PREFIX 是一个目录位置,用来安装 Boost.Build;

4 如果安装完成如果没有报错,接下来还在 boost 所在目录 运行

b2 -a --with-python address-model=64 toolset=msvc runtime-link=static

5 如果上一步还是没有报错,接下来吧设置环境变量:

BOOST_ROOT=C:\local\boost_1_65_1

BOOST_LIBRARYDIR=C:\local\boost_1_65_1\stage\lib

上面这些内容部分参考了 BOOST 官方文档的内容:Getting Started on Windows

上述步骤完成之后,使用 pip install dlib 来安装吧.

我自己在 Windows 7 32bit 系统下测到一半提示编译错误,不过能确定的是上面这些步骤都没问题了,算了,我懒得折腾了,以上内容供参考了。

希望大家都安装顺利,另外开发机还是 类 Unix 系统好配置啊。

pythondlib使用

转载请注明出处代码入门网 » pythondlib使用(dlib库,怎么在python中安装)

资讯

python判断是否存在函数(python怎么判断文件是否存在)

阅读(51)

本文主要为您介绍python判断是否存在函数,内容包括Python中如何判断一个对象是否为函数,python怎么判断文件是否存在,[Python基础]如何判断一个变量是否存在。正文 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使

资讯

matlabpythonspss(学统计学应该学哪个软件)

阅读(48)

本文主要为您介绍matlabpythonspss,内容包括SPSS、Mathematica、MATLAB、STATA、Python哪个上手比较快,SAS,SPSS,Matlab,Mathematic,R,Python各用于什么行业和职位,做数据分析里Python能做,而MATLAB不能做的。MATLAB就不要用了吧,除非你想做

资讯

window7安装python(如何在win7下安装Python及配置)

阅读(59)

本文主要为您介绍window7安装python,内容包括如何在win7下安装Python及配置,如何在win7下安装Python及配置,怎么在win7上安装python。安装配置如下:下载安装 Python如下载 Python 2.6,安装目录为 C:\Python26添加环境变量path =C:\Pyt

资讯

pythonstr(0)(pythonstr0:)

阅读(49)

本文主要为您介绍pythonstr(0),内容包括pythonstr0:2:2的意思是,python中str()的用法,python,str=&#39;Runoob&#39;,print(str[0:1])打印什么,为什么。这是python的切片的用法,一般语法是:起始下标:终止下标:间隔,其中包括起始下标的元素,但不包括

资讯

python2.764位pil(win764位怎么安装python和nltk)

阅读(49)

本文主要为您介绍python2.764位pil,内容包括win764位系统安装了python2.7又安装了PIL第三方64位模块在使用时,win764位怎么安装python和nltk,python哪个版本可以加pil。你装的是什么版本的python。如果你是2.7版本,并且电脑是64位机器。建议

资讯

python开发游戏脚本(游戏开发中常用哪种脚本语言)

阅读(133)

本文主要为您介绍python开发游戏脚本,内容包括python怎么写游戏脚本,python怎么写游戏脚本,python可以做游戏吗。一般大型的商业游戏引擎有自己的脚本语言,比如Unreal3就有自己的一套Unreal Script ,Unity3d可以用C#、Java

资讯

python动态实例化(python的类中怎么实现动态化函数)

阅读(58)

本文主要为您介绍python动态实例化,内容包括python的类中怎么实现动态化函数,python类实例化,Python中类是怎么实例化的为什么在创建实例之后还能添加属性。给你这样一个例子吧,这个例子里面有动态增加类的函数。声明一个类,类初始化的时候读

资讯

python库知乎(python图像处理库哪个好知乎)

阅读(98)

本文主要为您介绍python库知乎,内容包括python图像处理库哪个好知乎,python图像处理库哪个好知乎,Python常用的标准库以及第三方库。#coding:utf-8#使用的库import csv,os,sysimport xlwt,xlrdfrom xlrd import

资讯

python是否可迭代(python判断是否能够迭代)

阅读(45)

本文主要为您介绍python是否可迭代,内容包括python里哪些是可迭代对象,python判断是否能够迭代,python判断是否能够迭代。方法是通过collections模块的Iterable类型判断:>>> from collections import Iterable

资讯

pythonstdcall(python生成shellcode库有哪些)

阅读(141)

本文主要为您介绍pythonstdcall,内容包括python生成shellcode库,python怎么安装xlrd,我会Python,且第三方系统有接口,我应该如何通过Python去调用第。python中有个概念叫模块,模块中包含了定义的函数,方便重用。使用模块的语句如下:import 模

资讯

python秒数转时间(python将这个时间格式转化为秒数)

阅读(53)

本文主要为您介绍python秒数转时间,内容包括python将这个时间格式转化为秒数,Python函数将秒到分钟,小时,天问题,怎么解决,利用Python怎么得到现在时间的秒数并转换为整型。先把时间格式“1:23:20:27.00” 转化为字符串s1="1:23:20:27.00"#a=

资讯

pythondlib(dlib库,怎么在python中安装)

阅读(37)

本文主要为您介绍pythondlib,内容包括dlib库,怎么在python中安装,dlib库,怎么在python中安装,如何线上部署用python基于dlib写的人脸识别算法。这几天刚好用到Python,其中用到了Dlib库的人脸对齐算法。python中需要用到import dlib.pyd文件,

资讯

win32processpython(怎样使用python查询系统某一进程是否存在)

阅读(1)

本文主要为您介绍win32processpython,内容包括pythonwin32是什么?pythoncom如何理解,怎样使用python查询系统某一进程是否存在,怎样使用python查询系统某一进程是否存在。只需要一小段python代码,就可以解决用python查询判断系统进程是否存

资讯

python新建对象(python中怎么用类创建对象)

阅读(2)

本文主要为您介绍python新建对象,内容包括python中怎么用类创建对象,python如何定义新对象,python如何定义新对象。class BaseObject(object):def __init__(self, **kwg):self.__dict__ = d

资讯

pythonsslurllib(python报错urllib.error.URLError:)

阅读(1)

本文主要为您介绍pythonsslurllib,内容包括pythonurllib怎么用,pythonurllib,pythonhttplib2urllib区别。jango站点使用django_cas接入SSO(单点登录系统),配置完成后登录,抛出“urlopen error unknown ur

资讯

python变量替换(python中的变量替换怎么使用)

阅读(1)

本文主要为您介绍python变量替换,内容包括python中的变量替换怎么使用,Python怎样用变量替换字符串?,怎样通过参数替换python脚本里的变量值。1. 使用连接符: +world = "World"print "Hello " + world + " ! "2. 使用占位符来内插w

资讯

pythonraise用法(python中可以使用if作为变量名吗)

阅读(1)

本文主要为您介绍pythonraise用法,内容包括python中可以使用if作为变量名吗,Python新手,Python中except的用法和作用是什么?请指教,python当中的迭代器如何使用?举例说明,谢谢。不可以,if为python保留的字符下面的列表显示了在 Python 中的

资讯

sparkpythonhbase(有没有Python写的spark连接Hbase的例子)

阅读(2)

本文主要为您介绍sparkpythonhbase,内容包括有没有Python写的spark连接Hbase的例子,如何提高python写hbase的性能,spark读hbaseparquet哪个快。博主项目实践中,经常需要用Spark从Hbase中读取数据。其中,spark的版本为1.6,hbase的版本为0.98。

资讯

python文字编码转换(python如何将乱码转成汉字)

阅读(1)

本文主要为您介绍python文字编码转换,内容包括python字符编码转换,python如何将乱码转成汉字,python编码转换。python2与python3稍微有点区别2、python2中默认的字符编码格式都是unicode,在字符串前加u,表示unicode

资讯

python相除取整数(python为什么算除法自动取整了)

阅读(1)

本文主要为您介绍python相除取整数,内容包括python2.7.12中如何引用模块做整数相除,python2.7.12引用模块做整数除法,python除数向上取整怎么写,就是0.3取12.6取3这种,我5/10得到。在2.x版本都是这样,会自动取整。在3.x版本以上改了,结果保留