SIFT特征提取(PCV、VLFeat)的环境配置、常见Bug及修复方案

    • 转载请注明出处

代码

我使用的代码基本来自于后面这位博主,附上一些简单的注释:

https://blog.csdn.net/DeerDolphin/article/details/104727258?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_paycolumn_v3&utm_relevant_index=2

代码:

from PIL import Image
from pylab import *
from PCV.localdescriptors import sift
from PCV.localdescriptors import harris
import scipy
# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:/windows/fonts/SimSun.ttc", size=14)
# 没有对应文件夹就自己建一个,或者换一个路径,图片随便拍张改个名字
imname = 'D:/ComputerVision_code/img/sdl11.jpg'
# 读入文件
im = array(Image.open(imname).convert('L'))
# 将文件转换为pmg格式
sift.process_image(imname, 'empire.sift')
# 特征提取
l1, d1 = sift.read_features_from_file('empire.sift')

figure()
gray()
subplot(121)
sift.plot_features(im, l1, circle=False)
title(u'SIFT特征', fontproperties=font)

# 检测harris角点
harrisim = harris.compute_harris_response(im)

subplot(122)
filtered_coords = harris.get_harris_points(harrisim, 6, 0.1)
imshow(im)
plot([p[1] for p in filtered_coords], [p[0] for p in filtered_coords], '*')
axis('off')
title(u'Harris角点', fontproperties=font)

show()

PCV下载

下载

from PCV.xxx import xxx
cannot import PCV
总之就是无法下载导入PCV,python也未提供相应的包
按照这微博主的方法,下载python3对应的版本即可:(其他很多博主提供的是python2版本,下载后还需要手动修改文件代码)

https://blog.csdn.net/lishu14/article/details/100752181?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164713747116780255297479%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=164713747116780255297479&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-3-100752181.es_vector_control_group&utm_term=pcv%E5%AE%89%E8%A3%85&spm=1018.2226.3001.4187

注意运行的时候是setup.py不是.exe

安装PCV包后,Pycharm仍无法导入

如果电脑上在安装anaconda之前已经安装了python环境,在cmd命令行中安装PCV包会安装在系统原有的py环境中。
此时应该打开Anaconda Prompt
activate ****
然后再执行安装指令,将PCV安装在anaconda中
之后再将PCV文件夹(文件名就是这三个大写字母的文件夹),拷贝到***\Anaconda\Lib\site-packages中即可

VLFeat

下载

一定要下载0.9.20版本,官网最新版本已经改变
历史版本:https://www.vlfeat.org/download/
下载vlfeat-0.9.20-bin.tar.gz
按自己的电脑配置选择对应版本,放在任何一个你喜欢的地方即可
作者选择win64版本,放置位置D:\VLFeat\win64中
否则在sift.process_image()生成时有可能生成空文件

配置

修改文件:***\Anaconda\Lib\site-packages\PCV\localdescriptors\sift.py
中的process_image函数:
在这里插入图片描述将这里设置为***\VLFeat\win64(刚才下载的)文件夹下的sift.exe文件
注意(1)双引号前有一个r,(2).exe后有一个空格。

报错信息及处理

pycharm无法导入PCV

原因:将PCV安装在非anaconda的python环境中了。
解决方案:见本文\PCV下载\安装PCV包后,Pycharm仍无法导入。

安装PCV过程出错

原因:python2和3中print函数的格式不同。
解决方案:手动修改PCV中所有.py文件中的print函数,加();或见本文\PCV下载\下载。

empire.sift not found

原因:未修改PCV文件夹下的sift.py中的process_image函数。
解决方案:见本文\VLFeat\配置。

UserWarnning:empire.sift may be empty

即生成的empire.sift可能为空,大小0KB。
原因:VLFeat版本太高。
解决方案:见本文\VLFeat\下载。

Error:too many indices for array

原因:即列表维度出错,传入的列表的维度低于sift.read_features_from_file函数中所需要用到的列表维度,实质上和上一个报错同源,empire.sift为空自然维度不足。
解决方案:同上。

找不到对应文件夹等玄学错误

可能的解决方案:检查拼写、大小写、后缀。

运行结果

在这里插入图片描述完成

  • 8
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值