为顺利帮助读者完成本书中实例的学习,译者已对代码作了相应整理,下面给出在对本书实例学习前,你须要作的前期安装工做。注意,下面译者给出的安装过程是针对Windows下的,其余平台如Linux、Mac请查阅中译本附录。html
要完整复现书中的实例,你须要的主要四个文件包括Python(x,y) 2.7.x安装包、PCV库、VLfeat和本书用到的数据库。Python(x,y)能够在python-xy,PCV库、本书整理出来的实例代码以及本书用到的全部图像数据能够从首页给出的连接下载。python
在Windows下,译者推荐你安装Python(x,y) 2.7.x。Python(x,y) 2.7.x是一个库安装包,除了包含Python自身外,还包含了不少第三方库,下面是安装Python(x,y)时的界面:mysql
从上面第二幅图能够看出,pythonxy不只包含了SciPy、NumPy、PyLab、OpenCV、MatplotLib,还包含了机器学习库scikits-learn。 为避免出现运行实例时出现的依赖问题,译者建议将上面的库所有选上,也就是选择“full”(译者也是用的所有安装的方式进行后面的实验的)。安装完成后,为验证安装是否正确,能够在Python shell里确认一下OpenCV是否已安装来进行验证,在Python Shell里输入下面命令:git
from cv2 import __version__ __version__
输入上面命令,若是能够看到OpenCV的版本信息,则说明python(x,y)已安装正确。github
另外,须要提醒读者的是,Python是没有平台区分的,这里指的平台不是指Linux和Mac这样的平台概念,而是在Windows上没有位数的区分。举个简单的例子,好比你是64位的Windows系统,你能够安装32位的Python。对于这一部分的详细说明,能够参阅译者的一篇博文Django配置MySQL最后一段的说明。好了,关于Python(x,y)的安装说明就说到这里。算法
PCV库是原书做者写的一个第三方库,书中几乎全部的实例到要用到改库。假设你已从下载本书由译者整理的中译版源码,从Windows cmd终端进入PCV所在目录:sql
cd PCV python setup.py install
运行上面命令,便可完成PCV库的安装。为了验证PCV库是否安装成功,在运行上面命令后,能够打开Python自带的Shell,在Shell输入:shell
import PCV
若是未报错,则代表你已成功安装了该PCV库。数据库
VLFeat是一个跨平台的开源机器视觉库,它囊括了当前流行的机器视觉算法,如SIFT, MSER, HOG, 同时还包含了诸如K-MEANS, Hierarchical K-means的聚类算法。本书中主要在提取sift特征时用到了VLfeat。django
如上图所示,从红色框标的地方下载VLFeat,解压:
你须要的仅是对应平台的可执行文件,译者系统是32位的,因此选用的是win32。注意目前VLFeat最新发布版已到0.9.18了。对于0.9.18,目录结构和0.9.17的同样,因此你也仅需bin下对应的文件夹下的可执行文件。 将该win32拷贝到你想放置的某个目录,译者将其放置在计算机的以下目录:
须要注意的是,译者将原来的“bin”文件名从新"win32vlfeat"。完成该步骤后,进入PCV所在目录:
打开sift.py,找到下面代码:
def process_image(imagename,resultname,params="--edge-thresh 10 --peak-thresh 5"): """ process an image and save the results in a file""" if imagename[-3:] != 'pgm': #create a pgm file im = Image.open(imagename).convert('L') im.save('tmp.pgm') imagename = 'tmp.pgm' cmmd = str("D:\mltools\win32vlfeat\sift.exe "+imagename+" --output="+resultname+ " "+params) os.system(cmmd) print 'processed', imagename, 'to', resultname
将cmmd中的目录修改成你本身放置的Vlfeat bin所在目录。这里稍微解释一下os.system(cmmd)这句话的意思,这里Python经过os.system()调用外部可执行文件,也就是Vlfeat bin目录下的sift.exe。
好了,安装完后,你即可以运行书中的大部分实例代码了。这里之因此是“大部分”是由于书中的某些实例,还要用到别的库。