sift特征检测 sift not found 问题解决 以及pcv安装问题
sift特征检测 图像拼接 sift not found 问题解决
参考https://blog.csdn.net/weixin_42578378/article/details/88617349
但是有个问题,就是必须选择win32目录下的sift.exe文件,win64下的不行!!
另外
python3安装PCV包问题:
下载PCV包:https://codeload.github.com/Li-Shu14/PCV/zip/master;
打开Anaconda3的prompt窗口,切换到下载好的PCV包所在的路径下;
执行以下命令:
**
pip install PCV-master.zip
下面展示一些 关键代码
。
from PIL import Image
from pylab import *
import sys
from PCV.localdescriptors import sift
# 命令行参数个数小于3时读取图片文件
if len(sys.argv) >= 3:
im1f, im2f = sys.argv[1], sys.argv[2]
else:
im1f = 'E:/pic1.jpg'
im2f = 'E:/pic.jpg'
# 图像数组
im1 = array(Image.open(im1f))
im2 = array(Image.open(im2f))
sift.process_image(im1f, 'out_sift_1.sift') # 处理图像im1f,将结果保存在out_sift_1.sift文件中
l1, d1 = sift.read_features_from_file('out_sift_1.sift') # 读取特征属性值,以矩阵的形式返回
figure()
gray()
subplot(121)
sift.plot_features(im1, l1, circle=False) # 显示带有特征的图像
sift.process_image(im2f, 'out_sift_2.sift')
l2, d2 = sift.read_features_from_file('out_sift_2.sift')
subplot(122)
sift.plot_features(im2, l2, circle=False)
# matches = sift.match(d1, d2)
matches = sift.match_twosided(d1, d2) # 两幅图像中描述子的匹配
print('{} matches'.format(len(matches.nonzero()[0]))) # 匹配数
# 画匹配点连接
figure()
gray()
sift.plot_matches(im1, im2, l1, l2, matches, show_below=True) # 显示带有连接匹配之间连线的图片
show()