当前位置: 首页 > news >正文

python opencv的sift特征检测(Scale-Invariant Feature Transform)

sift

官方文档地址:https://docs.opencv.org/4.10.0/da/df5/tutorial_py_sift_intro.html

  • 创建SIFT实例cv2.SIFT.create()
  • 特征检测sift.detect
  • 描述子sift.compute/sift.detectAndCompute
  • 画特征cv2.drawKeypoints

原图

在这里插入图片描述

特征点

在这里插入图片描述

代码

import cv2first = './12.png'
'''
sift 特征检测
官方文档地址:https://docs.opencv.org/4.10.0/da/df5/tutorial_py_sift_intro.html
'''
if __name__ == "__main__":# 读取图片,转成灰度图img = cv2.imread(first)gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 创建SIFT实例sift = cv2.SIFT.create()# 特征检测# sift.detect() function finds the keypoint in the images. You can pass a mask if you want to search only a part of image.# Each keypoint is a special structure which has many attributes like its (x,y) coordinates,# size of the meaningful neighbourhood, angle which specifies its orientation,# response that specifies strength of keypoints etc.kp = sift.detect(gray, None)print(f"关键点:{kp}")print(f"f关键点:{type(kp)}")print(f"f关键点:{len(kp)}")print(f"f关键点:{kp[0]}")# 画出关键点# DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS可以展示特征点的大小和方向img = cv2.drawKeypoints(gray, kp, img, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)cv2.imshow("sift", img)cv2.waitKey(0)cv2.destroyAllWindows()# kp, des = sift.compute(gray, kp) 用计算出来的特征点计算描述子# 或者直接计算特征点和描述子# Here kp will be a list of keypoints and des is a numpy array of shape: len(kp) X 128kp, des = sift.detectAndCompute(gray, None)# print(kp)# print(type(kp))# print(kp[0])print(des.shape)print(des[0])
关键点:(< cv2.KeyPoint 0x11f179110>, < cv2.KeyPoint 0x11f179140>, < cv2.KeyPoint 0x11f179470>, < cv2.KeyPoint 0x11f179560>, < cv2.KeyPoint 0x11f179530>, < cv2.KeyPoint 0x11f179500>, < cv2.KeyPoint 0x11f1794d0>, < cv2.KeyPoint 0x11f1794a0>, < cv2.KeyPoint 0x11f17a9d0>, < cv2.KeyPoint 0x11f228c60>, < cv2.KeyPoint 0x11f228c30>, < cv2.KeyPoint 0x11f2288a0>, < cv2.KeyPoint 0x11f228930>, < cv2.KeyPoint 0x11f2289c0>, < cv2.KeyPoint 0x11f2289f0>, < cv2.KeyPoint 0x11f228ab0>, < cv2.KeyPoint 0x11f22bed0>, < cv2.KeyPoint 0x11f244570>, < cv2.KeyPoint 0x11f2443c0>, < cv2.KeyPoint 0x11f2443f0>, < cv2.KeyPoint 0x11f244510>, < cv2.KeyPoint 0x11f2445a0>, < cv2.KeyPoint 0x11f244630>, < cv2.KeyPoint 0x11f244660>, < cv2.KeyPoint 0x11f244690>, < cv2.KeyPoint 0x11f2446c0>, < cv2.KeyPoint 0x11f2446f0>, < cv2.KeyPoint 0x11f244720>)
f关键点:<class 'tuple'>
f关键点:28
f关键点:< cv2.KeyPoint 0x11f179110>
(28, 128)
[  0.   0.   0.   0.   0.   0.   0.   2.   1.   0.   0.   0.   0.   3.25.  18.   0.   0.   0.   0.   0.  18.  23.   2.   0.   0.   0.   0.0.   2.   1.   1.  23.   0.   0.   0.   0.   0.   0.  10. 139.   2.0.   0.   6.  29.  81. 136.  13.   0.   0.   0. 106. 162.  82.  26.23.   0.   0.   0.  22.  16.   7.  36.  41.   4.   0.   0.   0.   0.0.   1. 162.  34.   0.   0.  26.  11.   5.  22.  71.   6.   0.   0.162.  83.   5.   7. 122.   7.   0.   0.  70.  11.   1.  17.  22.   3.0.   0.   0.   0.   0.   0. 162.  37.   0.   0.  15.   2.   0.   0.83.  10.   0.   0. 162.  36.   0.   0.  94.  11.   0.   0.  78.   9.0.   0.]

相关文章:

python opencv的sift特征检测(Scale-Invariant Feature Transform)

sift 官方文档地址&#xff1a;https://docs.opencv.org/4.10.0/da/df5/tutorial_py_sift_intro.html 创建SIFT实例cv2.SIFT.create()特征检测sift.detect描述子sift.compute/sift.detectAndCompute画特征cv2.drawKeypoints 原图 特征点 代码 import cv2first ./12.pngsif…...

若依定时任务

表结构 目录 quartz框架 SysJobServiceImpl实现类 使用切点,在构造器执行的时候执行定时任务的构建(这个类是交给IOC容器的,所以这个时间点就是项目启动的时候)SysJobServiceImpl实现类的init方法创建任务 /*** 创建定时任务*/public static void createScheduleJob(Scheduler …...

k8s-node2 NotReady 节点NotReady如何解决?

从集群中移除 k8s-node2 [rootk8s-master ~]# kubectl delete node k8s-node2 node "k8s-node2" deleted重置 k8s-node2 登录到 k8s-node2 上&#xff0c;使用以下命令重置该节点&#xff0c;使其退出集群并恢复到初始状态&#xff1a; [rootk8s-node2 ~]# sudo k…...

Ubuntu通过mDNS实现局域网local域名和octoprint域名访问

OctoPrint是一个开源的3D打印机控制软件&#xff0c;它提供了一个Web界面&#xff0c;允许用户远程监控和管理3D打印机。通过USB连接到打印机后&#xff0c;用户可以使用任何带有Web浏览器的设备来控制打印作业&#xff0c;包括开始、停止、暂停打印&#xff0c;以及在打印过程…...

短视频矩阵账号管理技术源码搭建详解,支持OEM

一、引言 在短视频矩阵系统中&#xff0c;账号管理是至关重要的一环&#xff0c;它涉及到多平台账号的接入、用户信息的安全存储与高效管理、权限的精准控制以及账号数据的同步与更新等关键功能。一个健壮、灵活且安全的账号管理技术架构&#xff0c;能够为整个短视频矩阵系统的…...

【源码 导入教程 文档 讲解】基于springboot校园新闻管理系统源码和论文

可做计算机毕业设计JAVA、PHP、爬虫、APP、小程序、C#、C、python、数据可视化、大数据、文案 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xf…...

Spark SQL DML语句

【图书介绍】《Spark SQL大数据分析快速上手》-CSDN博客 《Spark SQL大数据分析快速上手》【摘要 书评 试读】- 京东图书 Spark本地模式安装_spark3.2.2本地模式安装-CSDN博客 DML&#xff08;Data Manipulation Language&#xff0c;数据操作语言&#xff09;操作主要用来对…...

开发微信小程序的过程与心得

起因 作为家长&#xff0c;我近期参与了学校的护学岗工作。在这个过程中&#xff0c;我发现需要使用水印相机来记录护学活动&#xff0c;但市面上大多数水印相机应用都要求开通会员才能使用完整功能。作为一名程序员&#xff0c;我决定利用自己的技术背景&#xff0c;开发一个…...

【1224】数据结构(sizeof/数组的长度定义/读取字符串函数/线性表长度/左值右值/静态变量/指针与引用)

1.对一维整型数组a的正确说明是 #define SIZE 10 (换行) int a[SIZE];说法是否正确&#xff1f; 正确 数组的SIZE可以用宏定义&#xff0c;但不能用变量 2.如有定义&#xff1a;char str[20];&#xff0c;能将从键盘输入的字符串“How are you”保存到 str 数组的语句是&#x…...

Android笔记(四十一):TabLayout内的tab不滚动问题

背景 假设二级页面是上面图片的布局&#xff0c;当进来时TabLayout和ViewPager2绑定完就马上调setCustomItem&#xff0c;跳转到最后一个tab页面时&#xff0c;会发现tab不滚动&#xff0c;手动滑一下ViewPager2时才会滚动tab到正确的位置 原因分析 调用TabLayoutMediator.at…...

基于pytorch的深度学习基础3——模型创建与nn.Module

三 模型创建与nn.Module 3.1 nn.Module 模型构建两要素&#xff1a; 构建子模块——__init()__拼接子模块——forward&#xff08;&#xff09; 一个module可以有多个module&#xff1b; 一个module相当于一个运算&#xff0c;都必须实现forward函数&#xff1b; 每一个mod…...

Debian-linux运维-docker安装和配置

腾讯云搭建docker官方文档&#xff1a;https://cloud.tencent.com/document/product/213/46000 阿里云安装Docker官方文档&#xff1a;https://help.aliyun.com/zh/ecs/use-cases/install-and-use-docker-on-a-linux-ecs-instance 天翼云常见docker源配置指导&#xff1a;htt…...

Docker完整技术汇总

Docker 背景引入 在实际开发过程中有三个环境&#xff0c;分别是&#xff1a;开发环境、测试环境以及生产环境&#xff0c;假设开发环境中开发人员用的是jdk8&#xff0c;而在测试环境中测试人员用的时jdk7&#xff0c;这就导致程序员开发完系统后将其打成jar包发给测试人员后…...

在JavaScript文件中定义方法和数据(不是在对象里定以数据和方法,不要搞错了)

在对象里定以数据和方法看这一篇 对象字面量内定义属性和方法&#xff08;什么使用const等关键字&#xff0c;什么时候用键值对&#xff09;-CSDN博客https://blog.csdn.net/m0_62961212/article/details/144788665 下是在JavaScript文件中定义方法和数据的基本方式&#xff…...

python爬虫爬抖音小店商品数据+数据可视化

爬虫代码 爬虫代码是我调用的数据接口&#xff0c;可能会过一段时间用不了&#xff0c;欢迎大家留言评论&#xff0c;我会不定时更新 import requests import time cookies {token: 5549EB98B15E411DA0BD05935C0F225F,tfstk: g1vopsc0sQ5SwD8TyEWSTmONZ3cA2u6CReedJ9QEgZ7byz…...

关于 覆铜与导线之间间距较小需要增加间距 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/144776995 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…...

uniapp中Nvue白屏问题 ReferenceError: require is not defined

uniapp控制台输出如下 exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->Uncaught ReferenceError: require is not defined 或者 exception function:createInstanceContext, exception:white s…...

在 Windows 上,如果忘记了 MySQL 密码 重置密码

在 Windows 上&#xff0c;如果忘记了 MySQL 密码&#xff0c;可以通过以下方法重置密码&#xff1a; 方法 1&#xff1a;以跳过权限验证模式启动 MySQL 并重置密码 停止 MySQL 服务&#xff1a; 打开 命令提示符 或 PowerShell&#xff0c;输入以下命令停止 MySQL 服务&#…...

《PyTorch:从基础概念到实战应用》

《PyTorch&#xff1a;从基础概念到实战应用》 一、PyTorch 初印象二、PyTorch 之历史溯源三、PyTorch 核心优势尽显&#xff08;一&#xff09;简洁高效&#xff0c;契合思维&#xff08;二&#xff09;易于上手&#xff0c;调试便捷&#xff08;三&#xff09;社区繁荣&#…...

前端:改变鼠标点击物体的颜色

需求&#xff1a; 需要改变图片中某一物体的颜色&#xff0c;该物体是纯色&#xff1b; 鼠标点击哪个物体&#xff0c;哪个物体的颜色变为指定的颜色&#xff0c;利用canvas实现。 演示案例 代码Demo <!DOCTYPE html> <html lang"en"><head>&l…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...

Python常用模块:time、os、shutil与flask初探

一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...

起重机起升机构的安全装置有哪些?

起重机起升机构的安全装置是保障吊装作业安全的关键部件&#xff0c;主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理&#xff1a; 一、超载保护装置&#xff08;核心安全装置&#xff09; 1. 起重量限制器 功能&#xff1a;实时监测起升载荷&a…...

Redis上篇--知识点总结

Redis上篇–解析 本文大部分知识整理自网上&#xff0c;在正文结束后都会附上参考地址。如果想要深入或者详细学习可以通过文末链接跳转学习。 1. 基本介绍 Redis 是一个开源的、高性能的 内存键值数据库&#xff0c;Redis 的键值对中的 key 就是字符串对象&#xff0c;而 val…...