【深度学习】OpenCV 角点检测与 SIFT 特征提取详解
OpenCV 角点检测与 SIFT 特征提取详解一、角点检测1. 什么是角点检测2. 检测流程3. 邻域Neighborhood4. Harris 角点检测案例关键函数说明完整代码二、SIFT 特征提取1. 什么是 SIFT2. 特征提取的一般步骤3. SIFT 案例实现完整代码代码解析关键点信息一、角点检测1. 什么是角点检测角点检测Corner Detection是计算机视觉中的一种基础特征提取方法用于识别图像中具有显著灰度变化的像素点即角点Corner。角点是图像中在不同方向上灰度值均发生剧烈变化的点例如物体的尖角两条边的交点T形或L形结构的端点角点具有以下优良特性旋转不变性图像旋转后角点仍然可被检测尺度不变性在不同缩放比例下角点依然存在光照不变性对光照变化具有一定的鲁棒性2. 检测流程角点检测通常遵循以下流程步骤描述1. 输入图像加载待检测的原始图像2. 图像预处理灰度化、降噪等为后续处理做准备3. 特征提取使用Harris、Shi-Tomasi等算法提取角点特征4. 角点响应计算计算每个像素点的角点响应值5. 角点定位与标记根据响应值定位角点并可视化标记6. 后处理可选非极大值抑制、阈值过滤等7. 输出结果返回角点坐标或标记后的图像3. 邻域Neighborhood在角点检测中邻域是指以某个中心像素为核心周围一定范围内的像素集合。邻域内的像素信息用于计算中心像素的角点响应值。邻域大小对检测结果有重要影响邻域大小特点较大邻域捕获更多细节信息但计算量增加较小邻域计算速度快但可能遗漏细微特征邻域的尺寸通常由blockSize参数控制需要根据具体的应用场景和图像特征进行调整。4. Harris 角点检测案例Harris 角点检测是一种经典的角点检测算法其核心思想是利用图像梯度计算角点响应值。关键函数说明cv2.cornerHarris(img,blockSize,ksize,k,dstNone)参数说明img输入图像需为灰度图blockSize角点检测中考虑的邻域大小ksizeSobel 算子窗口大小用于计算梯度kHarris 自由参数取值范围 [0.04, 0.06]dst输出响应矩阵与输入图像尺寸相同完整代码importcv2# 加载图像imgcv2.imread(huanghelou.png)cv2.imshow(原始图像,img)cv2.waitKey(0)# 灰度转换graycv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# Harris 角点检测# blockSize4ksize3k0.04dstcv2.cornerHarris(gray,4,3,0.04)# 标记角点响应值大于阈值的像素标记为绿色threshold0.05*dst.max()img[dstthreshold][0,255,0]# 显示结果cv2.imshow(角点检测结果,img)cv2.waitKey(0)cv2.destroyAllWindows()代码解析gray 输入图像必须为灰度图blockSize4 表示邻域尺寸为 4×4ksize3 表示 Sobel 算子的孔径大小为 3k0.04 为 Harris 自由参数值越小检测到的角点越多dst 矩阵中值越大的像素是角点的概率越高通过阈值 0.05 * dst.max() 筛选角点二、SIFT 特征提取1. 什么是 SIFTSIFTScale-Invariant Feature Transform尺度不变特征变换 是一种用于检测和描述图像局部特征的经典算法。SIFT 能够在尺度空间中寻找极值点并提取出具有以下特性的关键点尺度不变性对图像缩放具有鲁棒性旋转不变性对图像旋转具有鲁棒性光照不变性对光照变化具有一定的容忍度SIFT 提取的特征点可以用于图像匹配、目标识别、三维重建等多种任务。2. 特征提取的一般步骤步骤描述1. 数据预处理去噪、归一化、平滑等2. 特征选择选择合适的特征子集避免冗余和噪声3. 特征提取使用数学算法计算和提取特征4. 特征表示将特征表示为向量或其他便于计算的形式好的特征应具备辨别性能够区分不同类别或实例鲁棒性对变形和噪声有一定容忍度3. SIFT 案例实现完整代码importcv2importnumpyasnp# 加载图像mancv2.imread(man.png)cv2.imshow(原始图像,man)cv2.waitKey(0)# 灰度转换man_graycv2.cvtColor(man,cv2.COLOR_BGR2GRAY)# 创建 SIFT 对象siftcv2.SIFT_create()# 检测关键点kpsift.detect(man_gray)# 打印所有关键点坐标forpointinkp:print(f关键点坐标:{point.pt})# 绘制关键点显示尺度和方向man_siftcv2.drawKeypoints(man,kp,None,flagscv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)cv2.imshow(SIFT 关键点,man_sift)cv2.waitKey(0)# 计算关键点描述符用于后续匹配keypoints,descriptorssift.compute(man,kp)print(f关键点数量:{np.array(keypoints).shape[0]})print(f描述符矩阵形状:{descriptors.shape})print(描述符维度: 128 维)cv2.destroyAllWindows()代码解析方法说明cv2.SIFT_create()创建 SIFT 检测器对象sift.detect(gray)检测图像中的关键点返回关键点列表sift.compute(img, kp)计算关键点的描述符128维向量cv2.drawKeypoints()在图像上绘制关键点关键点信息每个关键点包含坐标 (x, y)、尺度、方向每个关键点的描述符为 128 维向量描述符可用于后续的特征匹配如 FLANN、BFMatcher

相关新闻

技术栈全解析!打造企业 RAG 知识库,这些核心技术缺一不可

技术栈全解析!打造企业 RAG 知识库,这些核心技术缺一不可

当团队文档越来越多,查找越来越慢;当客服每天重复回答同样的问题;当新人入职培训找不到资料……你是否想过:如果有一个智能助手,能秒懂所有公司知识,该多好? 这就是知识库的价值。今天&#xff…

2026/10/19 6:22:07 阅读更多 →
端到端,构建企业级知识库!!我把它做成项目给你

端到端,构建企业级知识库!!我把它做成项目给你

❝ 沉淀、分享、成长,让自己和他人都能有所收获!😜 ❞从前车马慢,一个需求聊一天。现在端到端,今天提,明天上线! 怀念,带着零食、拎着饮料,拉着研发,一聊就是…

2026/10/20 5:38:54 阅读更多 →
Harness 工程:AI 自我改进先从运行系统开始

Harness 工程:AI 自我改进先从运行系统开始

Harness 工程运行系统概念图 谈到递归自我改进(Recursive Self-Improvement,RSI),很多人的第一反应是:模型改自己的权重,然后能力一路加速。这个画面很抓人,但离今天的工程现场还有点远。更近的…

2026/10/20 5:38:53 阅读更多 →

最新新闻

Spark Streaming vs Flink:流处理选型核心差异与实战决策指南

Spark Streaming vs Flink:流处理选型核心差异与实战决策指南

1. 流处理选型这件事,为什么值得花时间掰扯清楚做实时数据处理的人,迟早会撞上同一个岔路口:Spark Streaming 和 Flink 到底选哪个。这个问题在技术社区里被反复讨论,但大多数对比文章停留在"Flink 是纯流、Spark 是微批&quo…

2026/10/21 4:35:50 阅读更多 →
OpenClaw 2026.3.28 Windows 原生部署:角色初始化与排错全流程

OpenClaw 2026.3.28 Windows 原生部署:角色初始化与排错全流程

把OpenClaw 2026.3.28 跑进 Windows 原生环境,是我近期做得最折腾也最值的一件事。这里的“原生”,我指的是不套 WSL、不丢容器镜像,直接在 Windows 桌面系统的本地环境里装依赖、起服务、完成角色初始化并把角色跑起来。这篇文章把整个部署过…

2026/10/21 4:35:50 阅读更多 →
阿里EDAS示例工程上云实战:本地启动、部署配置与灰度避坑指南

阿里EDAS示例工程上云实战:本地启动、部署配置与灰度避坑指南

简介:这份资源是阿里EDAS(企业级分布式应用服务平台)的入门示例工程,面向希望学习微服务架构与云端应用部署的Java开发者,尤其适合刚接触EDAS、需要动手实践的中初级人员。压缩包共15个文件,以8个xml配置文…

2026/10/21 4:35:50 阅读更多 →
Redis哨兵实战:高可用架构部署、故障转移与踩坑经验

Redis哨兵实战:高可用架构部署、故障转移与踩坑经验

Redis 哨兵这套东西,我最早接触是在一个电商促销活动前夜。当时主从架构跑得好好的,结果主节点凌晨挂了,运维手动切了四十分钟,老板在群里连发十几条消息。从那以后我就把哨兵当成了高可用方案的标配。这篇文章不讲教科书定义&…

2026/10/21 4:35:50 阅读更多 →
C# WinForm Panel 边框颜色改不动?三种自绘方案一次讲清

C# WinForm Panel 边框颜色改不动?三种自绘方案一次讲清

简介:面向C# WinForm开发者的Panel控件美化方案,解决默认边框颜色与宽度不可直接调整的问题。资源通过继承Panel并重写OnPaint方法,以Graphics绘制自定义边框,提供BorderColor与BorderWidth两个扩展属性,示例代码清晰易…

2026/10/21 4:35:50 阅读更多 →
BMI160六轴传感器驱动开发实战:从寄存器配置到姿态解算的完整指南

BMI160六轴传感器驱动开发实战:从寄存器配置到姿态解算的完整指南

简介:面向STM32F030平台的博世BMI160自写驱动代码,通过I2C总线实现三轴陀螺仪的基础数据交互,适用于嵌入式开发者学习传感器驱动编写或快速搭建原型。压缩包共3个文件、仅6KB,包含BMI160.c源文件以及BMI160.h、BMI160_prm.h两个头…

2026/10/21 4:34:49 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/21 4:27:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →