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

opencv进阶14-Harris角点检测-cv2.cornerHarris

类似于人的眼睛和大脑,OpenCV可以检测图像的主要特征并将这 些特征提取到所谓的图像描述符中。然后,可以将这些特征作为数据
库,支持基于图像的搜索。此外,我们可以使用关键点将图像拼接起 来,组成更大的图像。(想象一下把很多图片放到一起组成一幅360°的全景图。)

本节将展示如何使用OpenCV检测图像中的特征,并利用这些特征
匹配和检索图像。在本节的学习过程中,我们会获取样本图像并检测
其主要特征,然后试着在另一幅图像中找到与样本图像匹配的区域。
我们还将找到样本图像和另一幅图像匹配区域之间的单应性或者空间
关系。

Harris角点检测是计算机视觉领域中一种经典的角点检测算法,它可以用于许多应用场景。

以下是一些Harris角点检测的应用场景

图像配准: 在图像配准中,Harris角点检测可以用于找到两幅图像中具有相似特征的角点,从而进行图像对齐和匹配。

物体跟踪: 在目标跟踪中,Harris角点检测可以用于提取图像中的显著特征,帮助识别和跟踪目标。

摄像头标定: 在摄像头标定中,Harris角点检测可以用于检测摄像头拍摄图像中的角点,帮助计算摄像头的内参和外参。

三维重建: 在三维重建中,Harris角点检测可以用于提取图像中的关键特征点,帮助建立图像间的对应关系,从而实现场景的三维重建。

物体识别: 在物体识别中,Harris角点检测可以用于提取图像中的特征点,帮助识别和分类不同的物体。

自动驾驶: 在自动驾驶领域,Harris角点检测可以用于检测图像中的道路边缘和关键特征,帮助自动驾驶系统判断道路情况。

图像拼接: 在图像拼接中,Harris角点检测可以用于提取图像中的角点,帮助找到不同图像之间的对应关系,实现图像拼接和全景图生成。

图像匹配: 在图像匹配中,Harris角点检测可以用于寻找两幅图像中具有相似特征的角点,从而进行图像配准和匹配。

理解特征检测和匹配的类型

OpenCV中最常用的特征检测和描述符提取算法如下:

  • Harris:该算法适用于角点检测。
  • SIFT:该算法适用于斑点检测。
  • SURF:该算法适用于斑点检测。
  • FAST:该算法适用于角点检测。
  • BRIEF:该算法适用于斑点检测。
  • ORB:它是Oriented FAST和Rotated BRIEF的联合缩写。ORB对于角点和斑点的组合检测很有用。

可以通过下列方法进行特征匹配:

  • 蛮力匹配。
  • 基于FLANN的匹配。

可以通过单应性进行空间验证。

究竟什么是特征?

为什么图像的某个特定区域可以归类为特征,而其他区域则不能分类为特征呢?广义地说,特征是图像中独特或容易识别的一个感兴趣区域。具有高密度纹理细节的角点和区域是好的特征,而在低密度区域(如蓝天)不断重复出现的模式就不是好的特征。边缘是好的特征,因为它们倾向于把图像分割成两个区域。斑点(与周围区域有很大差别的图像区域)也是一个有趣的特征。

大多数特征检测算法都围绕着角点、边缘和斑点的识别展开,有
些还关注岭(ridge)的概念,其中岭可以概念化为细长物体的对称
轴。(例如,想象一下识别图像中的道路。)

有些算法更擅长识别和提取特定类型的特征,所以了解输入图像
是什么很重要
,这样就可以利用OpenCV中的最佳工具了。

检测Harris角点

什么是角点?

在计算机视觉和图像处理中,角点(Corner)是图像中突出的、有角度的、明显的像素点。角点通常位于图像中物体的边缘、纹理或其他特征的交叉点,是图像中的显著特征点。角点对于图像处理中的许多任务,如特征匹配、目标跟踪、3D重建等,具有重要的作用。

角点具有以下特征:

局部极大值: 在角点周围的邻域中,角点的像素值应该是局部最大值。

方向变化: 角点处的像素点方向会在不同方向上有较大的变化,这是因为角点是明显的图像特征。

明暗对比: 角点处的像素点周围可能是明暗对比较大的区域,因为角点是由物体的边缘、纹理等特征交叉形成的。

可重复性: 角点在不同的尺度和旋转下仍然可以被检测到,这使得它们在不同场景中都有用途。

下面看一下角点的类型:
在这里插入图片描述

cv2.cornerHarris 函数说明

dst=cv2.cornerHarris(img, blockSize, ksize, k)

公式中参数:

  • img表示原始图像
  • blockSize表示角点检测中的领域大小
  • ksize表示Sobel求导中使用的窗口大小
  • k表示Harris 角点检测方程中的自由参数,取值参数为[0,04, 0.06]

代码示例:

import numpy as np
import cv2# 读取待检测的图像
img = cv2.imread('chess_board.png')
# 转换为灰度图像
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray = np.float32(gray)
# 调用函数 cornerHarris,检测角点,其中参数 2 表示 Sobel 算子的孔径大小,23 表示 Sobel 算子的孔径大小,0.04 表示 Harris 角点检测方程中的 k 值
dst = cv2.cornerHarris(gray,2,23,0.04)dst = cv2.dilate(dst,None)
# 将检测到的角点标记出来
img[dst>0.01*dst.max()]=[0,0,255]cv2.imshow('dst',img)cv2.waitKey(0)
cv2.destroyAllWindows()

运行效果:

在这里插入图片描述
这里,我们选取的像素的分值至少是最高分值的1%,并在原始图
像中将这些像素涂成红色。

相关文章:

opencv进阶14-Harris角点检测-cv2.cornerHarris

类似于人的眼睛和大脑,OpenCV可以检测图像的主要特征并将这 些特征提取到所谓的图像描述符中。然后,可以将这些特征作为数据 库,支持基于图像的搜索。此外,我们可以使用关键点将图像拼接起 来,组成更大的图像。&#x…...

JVM中对象和GC Root之间的四种引用关系

1. 强引用 只有所有 GC Roots 对象都不通过【强引用】引用该对象&#xff0c;该对象才能被垃圾回收 由GC Root直接new出来的对象是强引用&#xff0c;只有当GC Root不再引用该对象的时候&#xff0c;才会被回收 例子&#xff1a; List<String> list new ArrayList<&…...

【李宏毅机器学习】注意力机制

输出 我们会遇到不同的任务&#xff0c;针对输出的不一样&#xff0c;我们对任务进行划分 给多少输出多少 给一堆向量&#xff0c;输出一个label&#xff0c;比如说情感分析 还有一种任务是由机器决定的要输出多少个label&#xff0c;seq2seq的任务就是这种&#xff0c;翻译也…...

Nginx使用keepalived配置VIP

VIP常用于负载均衡的高可用&#xff0c;使用VIP可以给多个主机绑定一个IP&#xff0c;这样&#xff0c;当某个负载应用挂了之后&#xff0c;可以自动切到另一个负载。 我这里是在k8s环境中做的测试&#xff0c;集群中有6个节点&#xff0c;我给140和141两个节点配置VIP。 1. 安…...

C语言编写图形界面

文章目录 环境使用库基础概念句柄 程序的入口创建窗口定义窗口类注册窗口类创建窗口 完整代码运行效果 环境 使用的是VSCode MinGW&#xff1b; 使用库 我们使用windows.h库来实现图形化界面。 头文件如下&#xff1a; #include <windows.h>windows.h是 Windows 操作…...

K8s学习笔记3

Kubernetes功能&#xff1a; Kubernetes是一个轻便的可扩展的开源平台&#xff0c;用于管理容器化应用和服务。通过Kubernetes能够进行应用的自动化部署和扩缩容。在Kubernetes中&#xff0c;会将组成应用的容器组合成一个逻辑单元以更易管理和发现。Kubernetes积累了作为Goog…...

ceph集群的扩容缩容

文章目录 集群扩容添加osd使用ceph-deploy工具手动添加 添加节点新节点前期准备新节点安装ceph&#xff0c;出现版本冲突 ceph-deploy增加节点 集群缩容删除osd删除节点 添加monitor节点删除monitor节点使用ceph-deploy卸载集群 实验所用虚拟机均为Centos 7.6系统&#xff0c;8…...

gremlin安装使用 详细步骤

gremlin是一个图数据库查询工具&#xff0c;注意他只是一个工具类似于dbeaver&#xff0c;navicat&#xff0c;sqlyog&#xff0c;是专门来分析图数据库的一个工具。 下载 下载地址Apache Download Mirrors 省事的可以直接 wget https://www.apache.org/dyn/closer.lua/tin…...

Java语言怎么编写一个程序计算出租车的运输费用:出租车起步15公里以内20块钱,需要支付调头费用

下面是一个Java语言编写的计算出租车运输费用的程序&#xff1a; java import java.util.Scanner; public class TaxiFareCalculator { public static void main(String[] args) { Scanner input new Scanner(System.in); System.out.print("请输入出租车行驶的里程&…...

十、flume的安装

1.解压 2.改名 3.修改权限 4.编辑环境变量并source export FLUME_HOME/usr/local/flume export PATH$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$HBASE_HOME/bin:$SQOOP_HOME/bin:$PIG_HOME/bin:$FLUME_HOME/bin 5.配置 6.查看版本 7.启动Hadoo…...

互联网广告及产品变现认知分析整理

深入学习互联网广告及产品&#xff0c;并且高效利用这一模式进行变现。 字节先是建立了一个非常强大的用户产品——抖音&#xff0c;通过各种渠道让抖音快速成长起来&#xff0c;收获了一大批初始用户。有了用户基础之后&#xff0c;字节开始打造它的广告产品&#xff0c;逐渐…...

item_search_img-按图搜索淘宝商品(拍立淘)

一、接口参数说明&#xff1a; item_search_img-按图搜索淘宝商品&#xff08;拍立淘&#xff09;&#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_search_img 名称类型必须描…...

OWASP Top 10(2021)漏洞学习(最新)

A01:2021-权限控制失效 从第五位上升到第一位&#xff0c;94%的应用程序都接受了某种形式的针对“失效的访问控制”的测试&#xff0c;该事件的 平均发生率为 3.81%&#xff0c;该漏洞在提供的数据集中出现漏洞的应用数量最多&#xff0c;总发生漏洞应用数量超过31.8万多 次。 …...

mysql 、sql server 游标 cursor

游标 声明的位置 游标必须在声明处理程序之前被声明&#xff0c;并且变量和条件还必须在声明游标或处理程序之前被声明 游标的使用步骤 声明游标打开游标使用游标关闭游标 &#xff08;sql server 关闭游标和释放游标&#xff09; sql server 游标 declare my_cursor curs…...

dockers搭建基本服务

1、使用mysql:5.6和 owncloud 镜像&#xff0c;构建一个个人网盘。 拉取mysql-5.6和owncloud的镜像 docker run -d --name mdb --env MYSQL_ROOT_PASSWORD123 cytopia/mysql-5.6 docker run -d -p 90:80 --name webdcloud --link mdb:mdb owncloud 注册的时候&#xff0c;数据…...

微信小程序纯前端从阿里云OSS下载json数据-完整版

起因 因为云开发开始收费(貌似很久了),准备改造在以前的小程序,数据转到oss上,小程序使用原生,不算专业领域, 所以先百度.... 网上的教程真的是千篇一律,大部分开局就是require(ali-oss); 好点的npm install ali-oss --save开局,拼凑操作到最后发现要用云开发,因为云…...

【微服务实战】01-工程结构概览

文章目录 工程结构概览:定义应用分层及依赖关系1.应用分层2.定义Entity3.仓储层3.1 工作单元&#xff1a;事务管理3.2 仓储层 4.领域事件5.APIController最佳实践 工程结构概览:定义应用分层及依赖关系 1.应用分层 领域模型层基础设施层 ⇒ 仓储应用层 ⇒ Api、后台任务Job共…...

论文导读|European Journal of Operational Research近期文章精选:旅行商问题专题

推文作者&#xff1a;王松阁 编者按 在“European Journal of Operational Research近期论文精选”中&#xff0c;我们有主题、有针对性地选择了European Journal of Operational Research中一些有趣的文章&#xff0c;不仅对文章的内容进行了概括与点评&#xff0c;而且也对文…...

playwright迭代元素

DOM结构 <ul><li>apple</li><li>banana</li><li>orange</li> </ul>迭代元素操作 通过 page.get_by_role("listitem") 会匹配到 apple, banana, orange&#xff0c; 如果要对这一组数据中的每个元素进行操作&#…...

65 | 增长模型案例

增长模型代表了一种综合性的方法论,旨在通过深入了解用户行为、市场趋势和数据洞察,来指导企业制定有效的增长战略。这种方法突破了传统的经验主义,将决策过程建立在数据驱动和实验的基础之上。增长模型不仅仅是一种理论,更是一种实际操作的框架,帮助企业在各个层面实现业…...

Django视图-HttpRequest请求对象和HttpResponse响应对象

文章目录 HttpRequestHttpResponse实践request对象的属性和方法响应 def index(request): 这个request其实就是内部已经封装好的Http请求HttpRequest&#xff0c;它是一个请求对象Django中的视图主要用来接受Web请求&#xff0c;并做出响应。 视图的本质就是一个Python中的函数…...

原来Lambda表达式是这样写的

原来Lambda表达式是这样写的 lambda 是一个匿名函数&#xff0c;我们可以把 lambda 表达式理解为是一段可以传递的代码。 lambda 简明地将代码或方法作为参数传递进去执行。 函数式编程&#xff1a;核心是把函数作为值。 函数式接口 &#xff1a;只有一个抽象方法的接口称之…...

smartsofthelp 5.0 最专业的数据库优化工具,数据库配置优化,数据库高并发优化,SQL 语句优化...

下载地址:百度网盘 请输入提取码 SQL操作返回历史记录&#xff1a; 2023-08-21 20:42:08:220 输入&#xff1a;select version as 版本号 2023-08-21 20:42:08:223 输出&#xff1a;当前数据库实例版本号&#xff1a;Microsoft SQL Server 2012 - 11.0.2100.60 (X64) …...

智影 R100:首款三维Mesh建模的SLAM激光扫描仪

近年来&#xff0c;激光SLAM系统凭借其更加快速且准确获取更丰富信息的优势&#xff0c;迅速风靡测绘领域&#xff0c;让原本耗时耗力的外业测量变得更加高效。手持激光扫描仪作为基于激光SLAM技术衍生的众多产品之一&#xff0c;相较于架站式激光扫描仪更加轻巧便利&#xff0…...

Next.js - Loading UI and Streaming

特殊文件 loading.js 可帮助您使用 React Suspense 创建有意义的加载用户界面。使用此约定&#xff0c;您可以在加载路由段内容时显示来自服务器的即时加载状态。渲染完成后&#xff0c;新的内容会自动切换进来。 即时加载状态 即时加载状态是在导航时立即显示的后备用户界面…...

快速解决Ubuntu 中 wine 程序 中文显示为方块/显示错误/无法显示中文(2023)

解决办法就是在创建prefix的命令行里加上LANG“zh_CN.UTF8” 或 LC_ALL“zh_CN.UTF8”&#xff0c;并安装cjkfonts&#xff0c;即可。 1、生成prefix、安装cjk字体 以下是基本流程&#xff1a; 现在假定wine和winetricks已经装好&#xff0c; // 先创建一个prefix&#xff0…...

漏洞指北-VulFocus靶场专栏-中级02

漏洞指北-VulFocus靶场专栏-中级02 中级005 &#x1f338;thinkphp lang 命令执行&#xff08;thinkphp:6.0.12&#xff09;&#x1f338;step1&#xff1a;burp suite 抓包 修改请求头step2 修改成功&#xff0c;访问shell.php 中级006 &#x1f338;Metabase geojson任意文件…...

【开源三方库】bignumber.js:一个大数数学库

OpenHarmony&#xff08;OpenAtom OpenHarmony简称“OpenHarmony”&#xff09;三方库&#xff0c;是经过验证可在OpenHarmony系统上可重复使用的软件组件&#xff0c;可帮助开发者快速开发OpenHarmony应用。如果是发布到开源社区&#xff0c;称为开源三方库&#xff0c;开发者…...

【C++】iota函数 + sort函数实现基于一个数组的多数组对应下标绑定排序

目录 一、iota函数 1. 函数解析 ​① 迭代器类型(补充) ② 头文件 ③ 参数 2. 函数用途与实例 二、sort函数 1、 函数解读 2、实现倒序排列 2.1 greater 与 less 模板参数 2.2 lambda表达式 三、下标绑定排序&#xff08;zip&#xff09; --- 833.字符串中的查找与替换 一、…...

C# window forms 进度条实现

在 C# Windows Forms 应用程序中&#xff0c;如果在后台执行长时间运行的任务&#xff0c;并希望同时更新进度条&#xff0c;可以使用多线程来实现。这将确保进度条的更新不会阻塞主线程&#xff0c;从而保持界面的响应性。以下是一个示例&#xff0c;演示了如何在后台执行任务…...

融媒体建设 政府门户网站/微信营销典型案例

extjs是一种软件。自动生成行号&#xff0c;支持checkbox全选&#xff0c;动态选择显示哪些列&#xff0c;支持本地以及远程分页&#xff0c;可以对单元格按照自己的想法进行渲染&#xff0c;这些也算可以想到的功能。 功能丰富&#xff0c;无人能出其右。 无论是界面之美&…...

企业网站维护怎么做/网络推广页面

相关历史文章&#xff08;阅读本文之前&#xff0c;您可能需要先看下之前的系列 &#xff09;分布式事务「2020年」必学&#xff0c;升职加薪你准备好了吗&#xff1f;事务的基本概念事务的四大特性ACID分布式事务产生的场景前言CAP理论告诉我们分布式系统最多只能满足CAP中的两…...

利于优化的网站/谷歌在线搜索

音视频实践学习 android全平台编译ffmpeg以及x264与fdk-aac实践ubuntu下使用nginx和nginx-rtmp-module配置直播推流服务器android全平台编译ffmpeg合并为单个库实践android-studio使用cmake编译ffmpeg实践android全平台编译ffmpeg视频解码器实践android全平台编译ffmpeg支持命…...

公司需要做网站吗/友链申请

2019独角兽企业重金招聘Python工程师标准>>> C语言中&#xff0c;没有string类型&#xff0c;有三种表现形式&#xff1a;字面值常量&#xff0c;字符串数组&#xff0c;字符串指针。 字符串指针变量&#xff1a;指向字符串的头指针。 char* ps “language”; //…...

大连城乡建设委员会网站/网页设计素材网站

构建代码Jeff Mott &#xff0c; Dan Prince和Sebastian Seitz对本文进行了同行评审。 感谢所有SitePoint的同行评审员使SitePoint内容达到最佳状态&#xff01; 以功能性方式考虑JavaScript的优势之一是能够使用小型&#xff0c;易于理解的单个功能来构建复杂的功能。 但是有…...

司法网站建设与维护 教材/怎么做网页设计的页面

转载于:https://www.cnblogs.com/lovelife20/p/4157923.html...