pycharm中配置VLfeat0.9.20和PCV实现Sift算法
文章目录VLFeat介绍下载PCV介绍下载配置到python库中可能出现的问题配置项目移动PCV更改.\PCV\localdescriptors\sift.py测试数据运行代码运行结果VLFeat介绍VLFeat开源库实现了流行的计算机视觉算法,这些算法专门用于图像理解以及局部特征提取和匹配。 算法包括费舍尔向量,VLAD,SIFT,MSER,k均值,分层k均值,聚集信息瓶颈,SLIC超像素,快速
VLFeat
介绍
VLFeat开源库实现了流行的计算机视觉算法,这些算法专门用于图像理解以及局部特征提取和匹配。 算法包括费舍尔向量,VLAD,SIFT,MSER,k均值,分层k均值,聚集信息瓶颈,SLIC超像素,快速移位超像素,大规模SVM训练等。 它是用C编写的,以提高效率和兼容性,并在MATLAB中提供了易于使用的接口,并在全文中提供了详细的文档。 它支持Windows,Mac OS X和Linux。
下载
VLFeat0.9.20,官方下载链接下载www.vlfeat.org.
PCV
介绍
PCV是基于Jan Erik Solem的《用Python编程计算机视觉》一书的纯Python计算机视觉库。
需要有Python 2.6+(最好是py2的版本)
下载
官方下载链接下载https://github.com/jesolem/PCV.
配置到python库中
将下载的文件压缩包进行解压。
打开cmd或者是Anaconda的命令行,执行如下指令:
(1)执行cd命令,转到你所解压到的PCV的文件夹中。
(2)输入python setup.py install。
(3)重启命令行,输入import PCV,如果没有报错,则说明PCV库安装成功。
(Note:也可以先不配置到python库中,直接跳过)
可能出现的问题
点击sift.exe文件运行
此时我的电脑报出由于找不到VCOMP100DLL,无法继续执行代码。重新安装程序可能会解决此问题
那么就可以下载对应的dll文件:
下载链接https://cn.dllfiles.com/vcomp100.dll.html。
64位系统对应64位,下载后放入C:\Windows\SysWOW64和C:\Windows\System32
配置项目
移动PCV
直接将解压之后pcv-master里的PCV移动到自己的pycharm项目下。
例如:
更改.\PCV\localdescriptors\sift.py
将.\PCV\localdescriptors\sift.py中变量cmmd进行更改。如下图所示,sift.exe后面有一个空格
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("E:\\vlfeat-0.9.20\\bin\\win64\\sift.exe "+imagename+" --output="+resultname+
" "+params)
os.system(cmmd)
print 'processed', imagename, 'to', resultname
测试
数据
现在项目下建立如下文件夹之后开始运行代码:
运行代码
# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
import sys
from PCV.localdescriptors import sift
if len(sys.argv) >= 3:
im1f, im2f = sys.argv[1], sys.argv[2]
else:
im1f = 'a.jpg'
im2f = 'b.jpg'
im1 = array(Image.open(im1f))
im2 = array(Image.open(im2f))
sift.process_image(im1f, 'out_sift_9.txt')
l1, d1 = sift.read_features_from_file('out_sift_9.txt')
figure()
gray()
subplot(121)
sift.plot_features(im1, l1, circle=False)
sift.process_image(im2f, 'out_sift_10.txt')
l2, d2 = sift.read_features_from_file('out_sift_10.txt')
subplot(122)
sift.plot_features(im2, l2, circle=False)
matches = sift.match_twosided(d1, d2)
print('{} matches'.format(len(matches.nonzero()[0])))
figure()
gray()
sift.plot_matches(im1, im2, l1, l2, matches, show_below=True)
show()
运行结果
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)