SIFT特征检测算子和sift = cv2.xfeatures2d.SIFT_create出错的解决办法

OpenCV SIFT特征匹配实战:从原理到工业级C++实现 图像特征匹配是计算机视觉中的一项基础且关键的技术,其核心在于从图像中提取并描述具有区分度的局部特征点,进而实现不同图像间内容的对应与对齐。SIFT(尺度不变特征变换)算法因其对尺度、旋转和光照变化的卓越鲁棒性,成为该领域的经典方法。其技术价值在于为图像拼接、三维重建、目标识别与增强现实等高级应用提供了稳定可靠的特征对应关系。在工程实践中,一个完整的SIFT特征匹配流程远不止简单的API调用,它涉及特征检测、描述符生成、高效匹配(如FLANN匹配器)、误匹配剔除(比率检验与RANSAC算法)以及几何验证(单应 阅读详情


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-python
 pip 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 plt

print("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 = rotated

cv2.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()

运行结果

原图:

在这里插入图片描述
模糊和旋转之后

在这里插入图片描述

进行特征点匹配

在这里插入图片描述

opencv学习——cv2.xfeatures2d.SIFT_create().detectAndCompute() import cv2 import numpy as npdef SIFT(img): I = cv2.imread(img) # gray = cv2.cvtColor(I, cv2.COLOR_BGR2GRAY) descriptor = cv2.xfeatures2d.SIFT_create() (kps, features) = descriptor.dete 阅读详情

相关推荐

SIFT算法运行cv.xfeatures2d.SIFT_create()时报错

问题描述 cv2.error: OpenCV(4.1.2) error: OpenCV(4.1.2) /io/opencv_contrib/modules/xfeatures2d\src\sift.cpp:1207: error: (-213:The function/feature is not implemented) This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE C

最白の白菜的博客 5089

cv2.xfeatures2d.SIFT_create()报错

cv2.xfeatures2d.SIFT_create()报错

董成荣的博客 2767

【报错】AttributeError: module ‘cv2.cv2‘ has no attribute ‘SIFT_create‘

【报错】AttributeError: module 'cv2.cv2' has no attribute 'SIFT_create'

静谧、淡雅 1236

sift = cv2.xfeatures2d.SIFT_create()运行报错解决方案

可以把原opencv卸载(pip uninstall opencv),然后安装扩展版本的opencv,pip install opencv-contrib-python==3.4.2.16(选择低版本,不然运行会报另一种错误)

qq_36732844的博客 2765

【AI生成】 LoRa无中心自组网实现方案

LoRa技术是一种低功耗广域网通信技术,它采用了扩频频率调制技术,能够实现远距离的传输。LoRa在物联网中具有重要的应用价值,可以支持大规模的设备连接并且具有较低的成本。同时,LoRa具有高度的抗干扰能力和适应性,能够在复杂的环境中实现稳定的通信。通过使用无中心自组网实现方案,可以进一步提高LoRa网络的灵活性和可靠性,实现设备之间的智能互联。LoRa无中心自组网实现方案将为物联网应用提供更加便捷和高效的通信解决方案。LoRa无中心自组网实现方案一、无中心自组网概念及优势。

qq_31310977的博客 2089

企业知识库AI助手的权限管理架构:如何实现细粒度控制?

在展开架构设计前,我们需要先明确“细粒度权限”的核心定义,并理解它对AI助手的特殊意义。权限管理的“粒度”,本质是权限控制的精准程度。维度粗粒度权限细粒度权限资源范围entire document(整个文档)field/paragraph(字段/段落)操作类型read/write(读/写)generate_summary/download/export(生成摘要/下载/导出)上下文约束无(静态权限)time/ip/device(时间/IP/设备)适用场景简单系统(如内部wiki)

大数据洞察的博客 1039

sift+图像匹配 算法

sift算法的原理我们不在这里做过多赘述,有想了解的可以去看我的另一篇博客,这里我们直接分析源码,在源码部分会做出注释。1.sift + BFMatxh匹配算法 def sift_image_match(i,img1, img2, img1_, img2_): # sift sift = cv2.xfeatures2d.SIFT_create() # 创建一个sift对象 keypoints_1, descriptors_1 = sift.detectAndCompute(.

qq_41368074的博客 1313

Obsidian从零搭建:可验证、可回溯、可演进的知识库工具链

个人知识库不是开箱即用的软件,而是基于Markdown内核构建的可演进系统。其核心原理在于分离‘稳定内核’与‘可插拔扩展’:Obsidian原生支持双链、嵌入、Frontmatter等基础能力,构成不可降级的知识骨架;而Dataview、Templater等插件则作为可验证、可回溯的增强层,需通过三问验证(解决痛点?有原生替代?失效可降级?)方可引入。这种设计赋予知识库技术价值——抗版本升级、跨平台兼容、离线可用,并支撑技术文档管理、项目复盘、读书笔记等真实场景。当面对computer use插件不可用或h

weixin_30660027的博客 680

问题:sift = cv2.xfeatures2d.SIFT_create()-2022解决办法

SIFT,CV2问题解决

盼你开心 2344

RK3568平台开发系列讲解(项目篇)手写数字识别

📢 本篇章带大家基于飞桨(PaddlePaddle),完成一个简单的手写数字识别任务。

内核笔记 1182

YOLOv8首发优化:遥感目标检测 | 专为低质量遥感图像设计的边缘 - 高斯聚合(EGA)模块,解决低空间分辨率、传感器噪声、目标模糊、低光照退化和部分遮挡等限制

一种轻量级网络,其创新性地整合了专为低质量遥感图像设计的边缘 - 高斯聚合(EGA)模块。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 488

Python Opencv实践 - SIFT关键点检测

【代码】Python Opencv实践 - SIFT关键点检测。

vivo01的专栏 818

YOLOv8改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合

可扩展的高效物体检测BiFPN(加权双向特征金字塔网络)

Limiiiing的博客 1081

AttributeError: module ‘cv2‘ has no attribute ‘xfeatures2d‘

AttributeError: module 'cv2' has no attribute 'xfeatures2d'

weixin_40809724的博客 6653

【AI理论学习】手把手推导扩散模型:Diffusion Models(DDPM)

生成扩散模型DDPM如下图所示分为前向、逆向两个过程,它首先通过不断往原始清晰数据中添加噪声使其变成标准高斯噪声(前向过程),而后期望从标准高斯噪声中还原原始数据(逆向过程)。若能实现,那便可从已知的标准高斯分布中采样一个噪声数据,而后利用DDPM模型生成符合原始数据分布的新数据。 Diffusion模型包含两个过程:数学符号:y∝xy\propto xy∝x:y正比于x,即y随着x增大而线性增大。 条件概率:贝叶斯公式:p(A∣B)=p(B∣A)×p(A)p(B)p(A|B)=\frac{p(B|A)\

小哲的博客 1510

道威棱镜的设计参考

道威棱镜的设计参考

weixin_72050316的博客 379

opencv4.10不能使用sift = cv2.xfeatures2d.SIFT_create()

python3.6 报错: error: (-213:The function/feature is not implemented) This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library i...

NEVERGUVEIP的博客 7603

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

机器学习进阶-图像特征sift-SIFT特征点 1.cv2.xfeatures2d.SIFT_create(实例化sift) 2. sift.detect(找出关键点) 3.cv2.drawKey...

1. sift = cv2.xfeatures2d.SIFT_create() 实例化 参数说明:sift为实例化的sift函数 2. kp = sift.detect(gray, None) 找出图像中的关键点 参数说明: kp表示生成的关键点,gray表示输入的灰度图, 3. ret = cv2.drawKeypoints(gray, kp, img) 在图中画出关键点 参数说明:...

weixin_34351321的博客 5999

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

AttributeError: module 'cv2' has no attribute 'xfeatures2d'

一、问题 module 'cv2.cv2' has no attribute 'xfeatures2d' 二、原因 该算法已经申请专利,开源OpenCV没有版权,新的OpenCV去掉了这个算法。 三、解决方案 1、推荐解决办法 pip uninstall opencv-python #推荐使用豆瓣python源 pip install opencv-python...

Allyli0022的专栏 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

cv2.xfeatures2d.SIFT_create()报错后,配置OpenCV+contrib+Python

opencv做一些特征检测匹配,所以需要用到opencv-contrib-python这个包,因为SIFT,SURF算法都已经申请专利了,所以这两个算法不免费,在opencv3.4.2之后的版本都不再包含这两个算法。只能使用3.4.1.15或者早期版本。 (具体可以查询,我用的是opencv-contrib3.4.1.15版本,Python版本为3.6.5),而且还有限制条件是Python版本为3...

weixin_45645281的博客 2777

cv2.xfeatures2d.SIFT_create()时报错The function/feature is not implemented

cv2.xfeatures2d.SIFT_create()时报错The function/feature is not implemented 应该是新版本api改了, 解决方法1: 查找新版本api,重写一遍 解决方法2: opencv-contrib-Python编译出现错误: sift = cv.xfeatures2d.SIFT_create() cv2.error: ...

jacke121的专栏 3311

【已解决】cv2.xfeatures2d.SIFT_create()不可用

原因为算法被申请专利,高版本下无法使用。解决方法为降低OpenCV版本,若当前Python版本较高,则也应降低版本以保证支持低版本的OpenCV。

m0_52684476的博客 1353

【opencv】“sift = cv2.xfeatures2d_SIFT().create()”出错的解决方法

貌似是该算法被申请了专利还是咋的,将opencv版本退到3.4.2即可解决,卸载之前的包,然后 pip install opencv-python == 3.4.2.16 pip install opencv-contrib-python == 3.4.2.16 亲测有效! 国内记得加阿里源(清华源没有): # 安装 opencv-python、opencv-contrib-python # 使用国内源 -i https://mirrors.aliyun.com/pypi/simple/ pip i

Jack_Kuo的博客 1731

Python 使用Opencv实现图像特征检测与匹配

本人新书《玩转Python网络爬虫》,可在天猫、京东等商城搜索查阅,项目深入浅出,适合爬虫初学者或者是已经有一些网络爬虫编写经验,但希望更加全面、深入理解Python爬虫的开发人员。 ———-欢迎加入学习交流QQ群:657341423 特征检测是计算机对一张图像中最为明显的特征进行识别检测并将其勾画出来。大多数特征检测都会涉及图像的角点、边和斑点的识别、或者是物体的对称轴。 角点检测...

Xy-Huang的博客 7万+

opencv4.6 报错 error: ‘cv::xfeatures2d::SIFT’ has not been declared

opencv4.6报错error: ‘cv::xfeatures2d::SIFT’ has not been declared。SIFT 已经由 xfeatures2d 移至 主仓库。

weixin_46559458的博客 1191
上一篇: Scikit-learn机器学习算法库代码实践
下一篇: Scikit-learn机器学习算法库代码实践
刘凯KAI
博客等级 码龄15年 663粉丝 128原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值