opencv特征检测

一 harris角点检测

基本思想

使用一个固定的小窗口在图像上进行任意方向的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化(sobel算子),那么我们可以认为该窗口中存在角点。

如图中有一个框框,如果他的上下左右像素值都发生了变化,那么就把这个点看作角点。

具体代码

复制代码
# ========== Harris角点检测 ==========
# 读取图像
img = cv2.imread('img.png')
# 转换为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# Harris角点检测
# blockSize: 角点检测中要考虑的邻域大小
# ksize: Sobel求导中使用的窗口大小
# k: Harris角点检测方程中的自由参数,取值参数为[0.04,0.06]
dst = cv2.cornerHarris(gray, blockSize=4, ksize=3, k=0.04)

# 标记检测到的角点
# 通过对角点响应进行阈值处理,标记出检测到的角点
# 0.05 * dst.max() 是一个阈值,大于这个值的像素点会被标记为红色
img[dst > 0.05 * dst.max()] = [0, 0, 255]

# 显示结果
cv2.imshow('Harris Corner Detection', img)
cv2.waitKey(0)

效果展示

特征检测:sift特征检测

SIFT(Scale Invariant Feature Transform)尺度不变特征变换。SIFT特征具有对旋转、尺度缩放、亮度变化等保持不变性,是一种非常稳定的局部特征。(这个算法是特征检测中最重要的方法)

特点

1、图像的局部特征,对旋转、尺度缩放、亮度变化保持不变,对视角变化、仿射变换、噪声也保持一定程度的稳定性。

2、独特性好,信息量丰富,适用于海量特征库进行快速、准确的匹配。

3、多量性,即使是很少几个物体也可以产生大量的SIFT特征

4、高速性,经优化的SIFT匹配算法甚至可以达到实时性

5、扩招性,可以很方便的与其他的特征向量进行联合。

具体代码

复制代码
# ========== SIFT特征提取 ==========
# 读取另一张图像
man = cv2.imread('img.png')
man_gray = cv2.cvtColor(man, cv2.COLOR_BGR2GRAY)

# 创建SIFT特征提取对象
sift = cv2.SIFT_create()

# 在图像中查找关键点
kp = sift.detect(man_gray, None)

# 绘制关键点
# flags参数说明:
# cv2.DRAW_MATCHES_FLAGS_DEFAULT - 默认方式
# cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS - 绘制富有信息的关键点
man_sift = cv2.drawKeypoints(man, kp, outImage=None, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)

# 显示结果
cv2.imshow('SIFT Keypoints', man_sift)
cv2.waitKey(0)

# 计算关键点描述符
kp, des = sift.compute(man_gray, kp)

# 输出关键点的形状和描述符的形状
print("关键点形状:", np.array(kp).shape)
print("描述符形状:", des.shape)

# 关键点属性说明:
# kp.pt: 关键点的(x, y)坐标
# kp.size: 关键点的大小(尺度)
# kp.angle: 关键点的方向
# kp.response: 关键点的响应值
# kp.octave: 关键点所在的金字塔层级

其中

复制代码
kp = sift.detect(man_gray, None)

检测完返回了所有的信息然后就可以画了。

结果展示

相关推荐
xixixi777772 分钟前
Token 经济引爆 AI 产业加速:从百模大战到百虾大战,谁在定义 2026 的中国 AI?
大数据·人工智能·机器学习·ai·大模型·算力·通信
爱上珍珠的贝壳3 分钟前
ESP32-S3-CAM:豆包语音识别文字后控制小车(一)——注册豆包火山引擎开发者接口
人工智能·语音识别·智能硬件·火山引擎·esp32-s3·豆包语音
七七powerful4 分钟前
运维养龙虾--使用Tidb skill,让 AI 写出「生产级」SQL
人工智能
IT枫斗者13 分钟前
MSE Nacos Prompt 管理:AI Agent 配置的工程化治理实践
网络·人工智能·websocket·网络协议·prompt·jar
love530love19 分钟前
Windows 下 vcpkg 依赖环境部署与全局化配置
人工智能·windows·vcpkg
wangfpp19 分钟前
AI生成UI的工程化实践:json-render概念、与A2UI对比及基于Qwen的实现
人工智能
Becomewiser20 分钟前
为什么你的Openclaw龙虾总是智障,ClaudeCode源码泄露揭露:Agent 的差距不在模型,在 Harness Engineering
人工智能
永霖光电_UVLED21 分钟前
Polar Light 获得了欧盟Eurostars计划的110万欧元(€1.1m)资助
大数据·人工智能·物联网·汽车·娱乐
SelectDB25 分钟前
AI 成为主流负载后,数据基础设施将如何演进?|Apache Doris 2026 Roadmap
人工智能·数据分析
deephub28 分钟前
Karpathy的LLM Wiki:一种将RAG从解释器模式升级为编译器模式的架构
人工智能·大语言模型·知识库·rag