【SIFT】python OSError: im1.sift not found解决方案
近期做了一些三维重建的工作,在做sift图像特征检测时遇到了一些问题,相信很多人也会有相同的经历,在这里写下自己的解决过程,希望在记录自己踩过的坑的同时,也能帮助大家解决问题。如有错误,请大家指正。
报错
原因分析:
报错提示的代码行为l1, d1 = sift.read_features_from_file(‘im1.sift’),说明没有读取到im1.sift,说明
在sift.process_image阶段没有生成sift文件
解决方案
添加开源工具包VLFeat,下载链接:http://www.vlfeat.org/download/,最好下载vlfeat-0.9.20-bin.tar.gz,我曾经下载了0.9.21并未解决问题。
1)把vlfeat-0.9.20\bin\win64文件夹下的sift.exe、vl.dll和vl.lib这三个文件复制到项目的文件夹中。
2)进如Anaconda安装目录,找到Lib\site-packages\PCV\localdescriptors中的sift.py文件,打开(notepad或者记事本均可),修改其中的cmmd路径
cmmd = str(r"C:\Users\PC028\PycharmProjects\test_3D\sift.exe “+imagename+” --output="+resultname+
" "+params)(路径是你项目文件夹中的sift.exe的路径,记得在路径前加r,并且路径最后要加一个空格)
需要注意 :路径内的引号需使用英文的引号,由于CSDN解码时将本文内的英文引号显式成了中文引号。若不放心,可以自己替换引号。