SIFT特征检测算子和sift = cv2.xfeatures2d.SIFT_create出错的解决办法
文章目录
- 一、安装额外的opencv-contrib-python库,并保持版本一致
- 二、两个库同时回退版本到3.4.2.16的版本
- 三、测试SIFT算子匹配点的一个案例
sift = cv2.xfeatures2d.SIFT_create()即使安装了contrib也无法正常工作的解决办法
一、安装额外的opencv-contrib-python库,并保持版本一致
首先安装contrib
,并检查和opencv-python
版本是否一致
pip install opencv-contrib-python
pip list
但是依然报错
sift = cv2.xfeatures2d.SIFT_create()
# 报错信息
AttributeError: module 'cv2.cv2' has no attribute 'xfeatures2d'
二、两个库同时回退版本到3.4.2.16的版本
首先卸载当前版本
pip uninstall opencv-pythonpip uninstall opencv-contrib-python
然后重新安装
pip install opencv-python==3.4.2.16
pip install opencv-contrib-python==3.4.2.16
如果还是不行,重启一下anaconda,问题解决。
三、测试SIFT算子匹配点的一个案例
核心公式
# 新建一个sift算子
sift = cv2.xfeatures2d.SIFT_create()
# 计算特征点和特征点周围的特征向量
kp1, des1 = sift.detectAndCompute(img1,None)
# 进行KNN特征匹配,k设置为2
matches = cv2.BFMatcher().knnMatch(des1,des2, k=2)
# 进行匹配点筛选,这个地方一直没看懂
for m,n in matches:if m.distance < 0.75*n.distance:good.append([m])
# 在匹配的点之间进行连线
imgNew = cv2.drawMatchesKnn(img1,kp1,img2,kp2,good,None,flags=2)
完整代码
import numpy as np
import cv2
import matplotlib.pyplot as pltprint("debug")
# 加载图片
img1 = cv2.imread('images/1.jpg',0) # queryImage
# img3是和img1一样的照片
img3 = cv2.imread('images/3.jpg',0)
# 对这张照片进行高斯模糊
blurred = cv2.GaussianBlur(img3, (9, 9), 0)
# 再旋转
(height, width) = blurred.shape[:2]
center = (width//2, height//2)
# 定义旋转矩阵,3个参数分别为:旋转中心,旋转角度,缩放比率
M = cv2.getRotationMatrix2D(center, 45, 1.0)
# 正式旋转,这样就得到了和原始图片img1不太一样的照片
rotated = cv2.warpAffine(blurred, M, (width,height))
img2 = rotatedcv2.imshow("original image",img1)
cv2.waitKey(0)
cv2.imshow("after blurred and rotated",img2)
cv2.waitKey(0)# 初始化SIFT算子,如果不能用,使用pip安装如下版本的库并重启conda
# pip install opencv-python == 3.4.2.16
# pip install opencv-contrib-python == 3.4.2.16
sift = cv2.xfeatures2d.SIFT_create()# 使用SIFT算子计算特征点和特征点周围的特征向量
kp1, des1 = sift.detectAndCompute(img1,None)
kp2, des2 = sift.detectAndCompute(img2,None)# BFMatcher中设置knn的k值
bf = cv2.BFMatcher()
matches = bf.knnMatch(des1,des2, k=2)# Apply ratio test
good = []
for m,n in matches:if m.distance < 0.75*n.distance:good.append([m])# cv.drawMatchesKnn expects list of lists as matches.
imgNew = cv2.drawMatchesKnn(img1,kp1,img2,kp2,good,None,flags=2)
# 保存图片
cv2.imwrite("imgNew.jpg",imgNew)
# 使用plt绘制
plt.imshow(imgNew),plt.show()cv2.destroyAllWindows()
运行结果
原图:
模糊和旋转之后
进行特征点匹配
SIFT特征检测算子和sift = cv2.xfeatures2d.SIFT_create出错的解决办法相关推荐
- cv2.xfeatures2d.SIFT_create()时报错The function/feature is not implemented
cv2.xfeatures2d.SIFT_create()时报错The function/feature is not implemented 应该是新版本api改了, 解决方法1: 查找新版本api ...
- opencv4.10不能使用sift = cv2.xfeatures2d.SIFT_create()
python3.6 报错: error: (-213:The function/feature is not implemented) This algorithm is patented and i ...
- 运行cv2.xfeatures2d.SIFT_create()时报错The function/feature is not implemented的解决方法,亲测可用
opencv-contrib-Python编译出现错误: sift = cv.xfeatures2d.SIFT_create() cv2.error: OpenCV(3.4.3) C:\project ...
- 树莓派安装opencv报错“opencv2/xfeatures2d/cuda.hpp”,解决办法
找不到"opencv2/xfeatures2d/cuda.hpp"文件或位置, 1.打开报错的文件 2.通过winscp找到cuda.hpp文件的路径 3.替换报错路径 其他的报错 ...
- 【图像处理】——特征匹配(SIFT特征检测器+FLANN特征匹配方法+KNN近邻最优匹配筛选)——cv.xfeatures2d.SIFT_create()sift.detectAndCompute
转载请注明地址 目录 1.特征检测和特征匹配方法 (1)特征检测算法 (2)特征匹配算法 (3)各种特征检测算法的比较 2.特征匹配的基本步骤(附带主要的函数) (1)图像预处理--灰度化(模板--查 ...
- sift特征检测与匹配
文章目录 一 实验背景 1.sift算法介绍 1.1sift算法特点 1.2sift算法可以解决的问题 1.3 sift算法实现具体步骤 2.关键点相关概念 2.1关键点(特征点) 2.2尺度空间 3 ...
- 【OpenCV】2020年关于SIFT算法专利版权问题的解决办法
前言 OpenCV 3.4之后因专利版权问题移除了SIFT/SURF的相关库,因此在使用较新版本的cv库时会报错 error: (-213:The function/feature is not im ...
- OpenCV图像特征提取学习四,SIFT特征检测算法
一.SIFT特征检测概述 SIFT的全称是Scale Invariant Feature Transform,尺度不变特征变换,由加拿大教授David G.Lowe提出的.SIFT特征具有对旋转.尺度 ...
- OpenCV + CPP 系列(卅五)图像特征提取(SURF特征检测、SIFT特征检测)
文章目录 一.SIFT特征检测 二.SURF特征检测 演示SURF.SIFT特征检测 OpenCV-python 角点特征检测之二(SIFT.SURF.ORB) 一.SIFT特征检测 SIFT(Sca ...
最新文章
- 从今天开始收集一些经典的算法。
- 我的Pandas学习经历及动手实践
- 基于关联规则(Variational Autoencoders)疾病预测系统实战:(pyspark FPGrowth实现频繁项集挖掘、最后给出预测模型topK准确率和召回率)
- 6.10 docker (二) 守护态运行
- 由于授权协议中的一个错误,远程计算机中断了会话
- 队列链式结构C/C++实现(数据结构严蔚敏版)
- JZOJ 1251. 收费站
- Oracle Stream配置详细步骤
- 数据可视化--pyecharts绘图
- java基础-关键字-native
- 基于JAVA+SpringBoot+Mybatis+MYSQL的销售团队管理系统
- [Linux日记]解决Ubuntu升级出现/boot空间不足问题
- 【红顶商人胡雪岩】-- 读完一点小感
- Python实现双色球随机选号
- 数据:FIT2CLOUD飞致云连续进入云管理软件市场权威研究报告
- 【操作系统】-- 进程同步、信号量机制(整型信号量、记录型信号量、PV操作)
- 赏析角度有哪些_从哪些角度赏析句子
- SAP-MM 常见移动类型
- golang 生成二维码名片 海报
- 实验室服务器系统崩溃,选课系统崩溃解救报告
热门文章
- MyCat分布式数据库集群架构工作笔记0008---Mycat主--从复制原理
- 正则表达式学习笔记011--贪婪和懒惰的匹配
- ASP.Net学习笔记007--ASP.Net Input版自增
- storm集群部署和配置过程详解
- python编程(multiprocessing库)
- mfc大观之五、六(消息机制和消息运行)
- python获取gps数据_python获取android设备的GPS信息脚本分享
- .ssh文件夹在哪里_【TOOLS】本地利用ssh远程连接服务器并启用远程服务器的jupyter lab并配置好anaconda的环境...
- burp proxy 过滤_burpsuite只拦截特定网站数据包教程
- c语言 动态链表,C语言的链表(篇章之二:动态链表)