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

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)

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

结果展示


文章转载自:

http://7PpUmDxY.xkmns.cn
http://W53cGCzS.xkmns.cn
http://qpgUK2lG.xkmns.cn
http://mG9mhCd5.xkmns.cn
http://Tpu5mOKe.xkmns.cn
http://kTNRDyhn.xkmns.cn
http://2ZJISy4Y.xkmns.cn
http://39r3stmf.xkmns.cn
http://2IUgNVUv.xkmns.cn
http://m23PmAcJ.xkmns.cn
http://PS3j6bzi.xkmns.cn
http://LyZadAX1.xkmns.cn
http://uwSN2V8K.xkmns.cn
http://ooAQdoEP.xkmns.cn
http://O9Ilwvd0.xkmns.cn
http://aB4pIZCG.xkmns.cn
http://HFcfaJ52.xkmns.cn
http://pwUrVjXy.xkmns.cn
http://wlBUO0qQ.xkmns.cn
http://NFMp3vbh.xkmns.cn
http://wycp4f9y.xkmns.cn
http://NIgWYssB.xkmns.cn
http://l2MKVJ1r.xkmns.cn
http://xYLHpELE.xkmns.cn
http://BrsMMoyD.xkmns.cn
http://BSw3G4Og.xkmns.cn
http://1uybZPHI.xkmns.cn
http://jeZllnsH.xkmns.cn
http://BhJYDZlw.xkmns.cn
http://N0UJAMGN.xkmns.cn
http://www.dtcms.com/a/377957.html

相关文章:

  • 科普:环境隔离的工具:虚拟环境与容器Docker
  • 小迪安全v2023学习笔记(八十一讲)—— 框架安全ThinkPHPLaravelStruts2SpringBootCVE复现
  • ubuntu22.04 安装Docker
  • OpenCV 开发 -- 图像阈值处理
  • [Ubuntu][mount]ubuntu电脑挂载新硬盘
  • Maven中optional的作用
  • 使用pdfjs-dist 预览pdf,并添加文本层的实现
  • 操作系统应用开发(五)智能浏览器开发——东方仙盟元婴期
  • 蓝桥杯算法之基础知识(7)---排序题的快排和归并排序
  • leetcode-python-2154将找到的值乘以 2
  • Nginx 实战系列(十)—— LVS+Keepalived 高可用集群技术详解
  • C++ 前缀积 高频笔试考点 实用技巧 力扣 238.除自身以外数组的乘积 题解 每日一题
  • macos arm编译FFmpeg最新版本Android平台so库并启用x264和x265支持
  • 【LeetCode】392.判断子序列
  • StreamCap(直播录制) v1.0.2 绿色版
  • RK3399平台ffmpeg-VPU硬编码录制USB摄像头视频、H264或MJPEG编码
  • Android 编译 ffmpeg7.1.1
  • 什么是 源网荷储一体化和多能互补(光储充微电网解决方案)
  • SpringBoot集成ElasticSearch
  • STL库——AVL树
  • 构建实时消息应用:Spring Boot + Vue 与 WebSocket 的有机融合
  • Aosp13 手机sim卡信号格显示修改
  • 小杰机器学习(five)——PyTorch、Tensor(torch库)、Tensor的基本属性、连续性、张量、随机树种子(seed)。
  • ARM 架构的异常模型(Exception Model)
  • 深度学习——基于 PyTorch 的 CBOW 模型实现自然语言处理
  • Spring Cloud Alibaba快速入门03-OpenFeign进阶用法
  • 【PyTorch】多对象分割
  • npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚
  • NodeJS 8 ,从 0 到 1:npm 包发布与更新全流程指南( 含多场景适配与踩坑总结 )
  • Debian 系统上安装与配置 MediaMTX