win10安装可以使用sift和surf的opencv-python

最近发现安装的opencv-python里面没有sift,自己安装的就是contrib版的,为什么没有sift呢?网上一顿搜索,应该版本的问题,所以只能把电脑上的最新版本的4.0.1版本的卸载,重新安装3.4.2.16版本的opencv,所以记录一下。

卸载原始的opencv-python包

首先将电脑中的opencv-python版本卸载,我使用的anaconda管理的python,所以打开anaconda prompt,执行

conda list

发现自己的opencv-python版本是 4.0.0.21
在这里插入图片描述
然后运行如下代码将其卸载。

pip uninstall opencv-contrib-python

等待包卸载完成。
在这里插入图片描述

安装3.4.2.16版本的opencv-python包

然后去网站上下载需要的3.4.2.16版本的python-opencv安装包(链接地址)。
网站打开如下图所示,因为我的是python3.6 所以直接下载对应的版本即可
在这里插入图片描述
下载后将安装包放到(你的安装盘:)\Anaconda3\Lib\site-packages中(我安装anaconda的地址是“D:\Anaconda3”,以我的地址为例),然后打开anaconda prompt,执行以下语句安装刚才下载的opencv-python包:
进入d盘:

d:

cd到安装包的目录下:

cd D:\Anaconda3\Lib\site-packages

安装刚才下载的安装包:

pip install opencv_contrib_python-3.4.2.16-cp36-cp36m-win_amd64.whl

最后等待完成即可:
在这里插入图片描述

测试安装结果

运行以下代码

import cv2
img1_path = r''
img2_path =r''
img1 = cv2.imread(img1_path)
img2 = cv2.imread(img2_path)
# 定义surf特征点检测器
surf = cv2.xfeatures2d.SURF_create(400)
# 检测两张图中的特征点
kp1,des1 = surf.detectAndCompute(img1,None)
kp2, des2 = surf.detectAndCompute(img2,None)
# 使用knn对两张图中的特征点分别计算最相近的两个点
bf = cv2.BFMatcher()
matches = bf.knnMatch(des1, des2, k=2)
# 最相近的两个点的比值大于阈值才认为是匹配的
good = []
for m, n in matches:
    if m.distance < 0.75 * n.distance:
        good.append([m])
# 将匹配的特征点画在图中
img_out = cv2.drawMatchesKnn(img1, kp1, img2, kp2, good[:15], None, flags=2)
cv2.imshow('image', img_out)  # 展示图片
cv2.waitKey(0)  
cv2.destroyAllWindows() 

得到最终的结果
在这里插入图片描述

如果你安装了3.4.2.16版本的还是出错,可以试试其他版本的。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值