摘要:在Python计算机视觉编程一书中,SIFT(尺度不变特征变换)部分,编写代码时,会遇到empire.sift 找不到的问题,下面介绍它的解决方法:
首先,明确它是通过调用外部已经写好的一段代码来运行,就是vlfeat库中的sift.exe。
1.下载PCV,安装配置。下载地址为:https://github.com/jesolem/PCV,下载后使用dos命令进入文件夹,输入:python setup.py install.即可安装到Python目录中。安装完成后,推荐把里面有个大写的PCV文件夹复制保存在你的python环境第三方库的文件夹下,就是那个…\Anaconda\Lib\site-packages(这里针对使用Anaconda环境的),方便管理。
2.下载vlfeat 0.9.20 (必须是这个版本,官网最新是0.9.21试了不行),保存到你想保存的位置。
3.配置PCV,这里面有一个sift.py文件,位置大致是:…\Anaconda\Lib\site-packages\PCV\localdescriptors
修改里面的cmmd路径,目的就是调用vlfeat中的sift.exe
这里注意事项:
(1)路径字符串前加 r ;
(2)sift.exe后面有一个空格
到这一步可能有的人能够运行,但有的人仍然不能运行,不能运行的大部分是因为缺少了一个 vcomp100.dll的文件,看网上有的说这个文件需要根据系统是64还是32位放在不同的地方。64位系统放在 C:\Windows\SysWOW64中,32位放在C:\Windows\System32中。但是我的64位系统那个文件夹中已有那个文件但仍然报错,就把这个文件放在了C:\Windows\System32试了下就不报错了,所以最好这个文件在两个文件夹下都放一份。到这里基本问题应该都解决了。
结果展示:
python代码图示:
1.
这里通过使用PCV中的sift.py文件调用vlfeat中的sift.exe执行(我的图片名称是自定义的,与书中不同)。
2.当然也可以有第二种方法,就是自己手写书中的sift里面的函数代码,如图:
cmmd处与上面同理做修改。这样,就不需要引用PCV中的sift了,直接调用sift.exe。
在process_image等函数前不需要再加sift前缀。