一.在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文件删除即可