10:Python计算机视觉编程1:Python 调用 SIFT

Python 调用 VLFeat 接口

最近,一直在抽空学习 Python计算机视觉编程,因为目前还没有一本较为完整且适合初学者来使用的 Python计算机视觉教程,所以前前后后遇到了不少的问题,每次遇到调试代码出错,甚是头疼,完全找不到解决的思路,有时候耗费了我很多的精力和时间。暂时打算以系列博文来记录一下我学习中遇到的一些问题,方便后来人。

说明:Matlab,VS 调用VLFeat 就不用参考本文了,VLFeat 工具包中 readme 和官网上有详细教程。本文针对官网上没有提到的 Python 调用VLFeat 情况。VLFeat 以及 SIFT 相关资源

实现平台:Win64 + Pycharm/anaconda ( 同时我也安装了 anaconda ,因为它自带了很完整的库,,无需自己去费时费力的去安装)

VLFeat工具包: 官方下载链接,如果打开速度较慢的话,也可以使用我上传的这个CSDN下载链接。VLFeat 工具包中含有大量的完整的代码实现,如下图。

SIFT:这个就不得不提到大牛 Lowe 了。因为接下来实现的就是调用他写的 SIFT demo。提上链接,供大家参详,SIFT主页。本文使用 的 是VLFeat 工具包(内含SIFT),所以这个你不用下载。当然你如果不想使用VLFeat工具包,直接使用这个也行,链接奉上CSDN下载链接。

开始正题1.下载VLFeat 工具包并解压。

按照下图的路径一次打开,显然我们将要使用的就是 win32/win64根据你自己的系统选择。我是windows7 64位操作系统,自然选择 win64这个文件夹。

2.调用VLFeat。(方法二,较为简单,我采用了方法二)

方法一:把 VLFaet 添加到环境变量中。 方法二:把Win64文件夹直接复制到自己的Python工程项目中。我在项目中新建了一个名为VLFeat的文件夹,将复制的win64文件家直接粘贴在这个新建的文件中。

3.代码调整

主要使用到三个py文件,我已经上传了。使用说明:下载上面三个py文件,放在一起,用Pycharm 打开 test5_sift.py。 sift.py test5_sift.py harris.py harris角点检测就是顺带放在里面做对比玩的。。。你也可以不用,在 test5_sift.py 中,将对应的代码删掉就行了。

test5_sift.py部分代码事例PIL import Imagefrom pylab import *”””我这边已经是按照自己的习惯,都已经改为包和文件了,如果你想使用本程序,请根据#号的提示,做相应的修改。我的sift.py 和 harris.py 均在PCV/localdescriptors/路径下,所以下面两句的 import 导入你都要修改。”””from PCV.localdescriptors import sift#这是我导入的方式,你的就改为 import siftfrom PCV.localdescriptors import harris#这是我导入的方式,你的就改为 import harrisimname = (‘/Python-PCV/Test/test.jpg’)#路径替换为自己测试图片的路径im = array(Image.open(imname).convert(‘L’))sift.process_image(imname,’test.sift’)l1,d1 = sift.read_features_from_file(‘test.sift’)figure()gray()subplot(131)”””图1 :SIFT特征”””sift.plot_features(im,l1,circle = False)title(‘sift-features’)subplot(132)”””图2 :使用圆圈表示特征尺度的SIFT特征”””sift.plot_features(im,l1,circle = True)title(‘sift_features_det’)harrisim = harris.compute_harris_response(im)filtered_coords = harris.get_harris_points(harrisim,6,0.1)subplot(133)”””图3 :harris角点检测的结果”””imshow(im)plot([p[1]for p in filtered_coords],[p[0] for p in filtered_coords])axis(‘off’)title(‘harris’)show()sift.py部分代码事例#pythonfrom PIL import Imagefrom numpy import *from pylab import *import os):””” Process an image and save the results in a file. “””if imagename[-3:] != ‘pgm’:# create a pgm fileim = Image.open(imagename).convert(‘L’)im.save(‘tmp.pgm’)imagename = ‘tmp.pgm'”””下面cmmd中的”E:\Python-PCV\VLFeat\win64\sift.exe “路径修改为步骤2中的路径下的sift.exe。务必注意,sift.exe后面还有一个空格不能丢!!!”””cmmd = str(“E:\Python-PCV\VLFeat\win64\sift.exe “+imagename+” –output=”+resultname+” “+params)os.system(cmmd)print ‘processed’, imagename, ‘to’, resultname4.修改好了,那就跑一跑呗。

在pycharm打开的test5_sift.py中,使用快捷键:Shift+F10,运行代码。效果如下。

只做第一个我,不做第二个谁。

10:Python计算机视觉编程1:Python 调用 SIFT

相关文章:

你感兴趣的文章:

标签云: