SIFT算法和Bag fo Features(BOF)算法代码实现过程中遇到的 问题

一.在anaconda中配置PCV和vlfeat

安装PCV库:

PCV下载地址:

  • https://github.com/jesolem/PCV
  • https://codechina.csdn.net/mirrors/jesolem/pcv?utm_source=csdn_github_accelerator

第二个是国内镜像源,会更快一点。 

由于版本问题,PCV文件中的一些代码需要手动更改至正确:

具体在文件夹pcv-master\PCV中:

大多数只需要将形如print "hello"改为print ("hello")

imagesearch.py中的头文件pysqlite2若报错,则将pysqlite2改为sqlite3

wrap.py中的头文件matplotlib.delaunay若报错,将

import matplotlib.delaunay as md 

 改成

from scipy.spatial import Delaunay

然后将函数triangulate_points(x,y):中的内容改为

tri = Delaunay(np.c_[x,y]).simplices

修改好后通过文件夹进入控制台

激活conda环境

 

 输入python setup.py install 即可在conda环境中安装PCV

配置vlfeat

下载地址:VLFeat - Tutorials > SIFT detector and descriptor

非常非常非常建议下载0.9.20版本,0.9.21版本会出现非常多的问题

下载好后进行解压,将文件夹中的sift.exe,vl.dll和vl.lib复制进自己项目的文件夹

然后进入anaconda3的文件夹找到PCV中的sift.py文件,找到cmmd,将路径改为解压出来的文件夹中sift的路径

 

 双引号前记得加r,末尾有个空格,这样vlfeat就配置好了

二.代码实现过程中出现的问题:

1.头文件import sift报错:

将头文件改为

from PCV.localdescriptors import sift

2.越界问题:

res_reg那行报错:list index out of range

将前面的q_ind改为较小的数值,小于总图片数即可

3.数据类型报错:

res_reg那行报错:a bytes-like object is required, not 'str'

进入PCV中的imagesearch.py中,找到return pickle.loads(str(s[0]))这行,将str去掉,

并且找到如下图的代码,将红框内的代码修改如下

 4.图片列表已经存在

indx.create_tables()这行报错:table imlist already exists

因为已经运行过代码,生成了一个.db文件,将文件夹中的.db文件删除即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值