OpenCV系列之Shi-tomas拐角检测器和益于跟踪的特征 | 三十八
目标
在本章中,
我们将学习另一个拐角检测器:Shi-Tomasi拐角检测器
我们将看到以下函数:cv.goodFeaturesToTrack()
理论
在上一章中,我们看到了Harris Corner Detector。1994年下半年,J。Shi和C. Tomasi在他们的论文《有益于跟踪的特征》中做了一个小修改,与Harris Harris Detector相比,显示了更好的结果。哈里斯角落探测器的计分功能由下式给出:
取而代之的是,史托马西提出:
如果大于阈值,则将其视为拐角。如果像在Harris Corner Detector中那样在空间中绘制它,则会得到如下图像:
从图中可以看到,只有当和大于最小值时,才将其视为拐角(绿色区域)。
代码
OpenCV有一个函数cv.goodFeaturesToTrack()。它通过Shi-Tomasi方法(或哈里斯角检测,如果指定)找到图像中的N个最强角。像往常一样,图像应该是灰度图像。然后,指定要查找的角数。然后,您指定质量级别,该值是介于0-1
之间的值,该值表示每个角落都被拒绝的最低拐角质量。然后,我们提供检测到的角之间的最小欧式距离。
利用所有这些信息,该功能可以找到图像中的拐角。低于平均质量的所有拐角点均被拒绝。然后,它会根据质量以降序对剩余的角进行排序。然后函数首先获取最佳拐角,然后丢弃最小距离范围内的所有附近拐角,然后返回N个最佳拐角。
在下面的示例中,我们将尝试找到25个最佳弯角:
import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('blox.jpg')
gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
corners = cv.goodFeaturesToTrack(gray,25,0.01,10)
corners = np.int0(corners)
for i in corners:x,y = i.ravel()cv.circle(img,(x,y),3,255,-1)
plt.imshow(img),plt.show()
查看以下结果:
此功能更适合跟踪。我们将看到使用它的时机。
☆☆☆为方便大家查阅,小编已将OpenCV-Python专栏文章统一整理到公众号底部菜单栏,同步更新中,关注公众号,点击左下方“文章”,如图:
或点击下方“阅读原文”,进入OpenCV-Python专栏,即可查看系列文章。
不断更新资源
获取更多精彩
长按二维码扫码关注
OpenCV系列之Shi-tomas拐角检测器和益于跟踪的特征 | 三十八相关推荐
- OpenCV学习笔记(三十六)——Kalman滤波做运动目标跟踪 OpenCV学习笔记(三十七)——实用函数、系统函数、宏core OpenCV学习笔记(三十八)——显示当前FPS OpenC
OpenCV学习笔记(三十六)--Kalman滤波做运动目标跟踪 kalman滤波大家都很熟悉,其基本思想就是先不考虑输入信号和观测噪声的影响,得到状态变量和输出信号的估计值,再用输出信号的估计误差加 ...
- opencv镜像_DX200操作要领—PAM与镜像平移变换(三十八)
6.4 PAM功能 6.4.1 PAM功能 再现中的位置修改功能 (PAM 功能:Position Adjustment Manual) ,可在查看机器人动作状况的同时,在不停止机器人的情况下,通过简 ...
- OpenCV——Harris、Shi Tomas、自定义、亚像素角点检测
在图像处理和与计算机视觉领域,兴趣点(interest points),或称作关键点(keypoints).特征点(feature points) 被大量用于解决物体识别,图像识别.图像匹配.视觉跟踪 ...
- OpenCV系列之理解特征 | 三十六
目标 在本章中,我们将尝试理解什么是特征,为什么拐角重要等等 解释 你们大多数人都会玩拼图游戏.你会得到很多小图像,需要正确组装它们以形成大的真实图像.问题是,你怎么做?将相同的理论投影到计算机程序上 ...
- [Python图像处理] 三十八.OpenCV图像增强和图像去雾万字详解(直方图均衡化、局部直方图均衡化、自动色彩均衡化)
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
- 快速傅里叶变换python_【原创】OpenCV-Python系列之傅里叶变换(三十八)
OpenCV-Python系列之傅里叶变换 傅里叶变换 我们生活在时间的世界中,早上7:00起来吃早饭,8:00去挤地铁,9:00开始上班...以时间为参照就是时域分析. 但是在频域中一切都是静止的! ...
- “约见”面试官系列之常见面试题第三十八篇之js常见的继承方式(建议收藏)
1.原型链继承 核心: 将父类的实例作为子类的原型 将构造函数的原型设置为另一个构造函数的实例对象,这样就可以继承另一个原型对象的所有属性和方法,可以继续往上,最终形成原型链 父类 // 定义一个动物 ...
- BizTalk开发系列(三十八)微软BizTalk Server定价和许可[解读]
更多内容请查看:BizTalk动手实验系列目录 BizTalk 开发系列 做BizTalk的项目一段时间了,但是对BizTalk的价格和许可还不是很了解.给 ...
- ASM 翻译系列第三十八弹:ASM数据清理
原作者:Bane Radulovic 译者: 魏兴华 审核: 魏兴华 DBGeeK社区联合出品 原文链接:http://asmsupportguy.blogspot.sg/2015/12/ ...
最新文章
- 基本数据类型(列表,元祖,字典,集合)
- vue php企业站案例,vue 开发企业微信整合案例分析
- Linux:shell脚本命令: /dev/null 21 的理解
- [转载] Java中的50个关键字
- mac双系统时间不统一的解决方法_墨兰不开花最好解决,教你几招好方法,时间一到就窜花芽...
- new 对象时的暗执行顺序
- mock server java_MockServer 简单示例
- 金蝶服务器选项没有账套信息,金蝶财务软件帐套属性设置保存和帐套启用报错的解决方法...
- 西电计科院Python程序设计随课笔记(李光夏)
- 关于checkbox的removeClass属性
- 【mongo系列】 六、mongo分片集群
- 适用选择并遮住抠人物头发丝
- 微服务架构总结性介绍 (深度好文)
- JAVA NIO文件映射、通道、流读写文件示例
- 骁龙780G和骁龙768G参数对比 骁龙780G和骁龙768G差距大不大
- win10浏览器正常访问,但无法进行下载(解决方法)
- 科学计算机sd mode使用方法,你是否知道科学计算器的使用方法
- solr8.3集群配置
- Revit2020以及Revit2019安装以及激活配置教程
- 字符串以特定方式转换为列表
热门文章
- ABAQUS错误代码system error code 1073741819
- 北京航空航天大学王田苗教授:人工智能与机器人前沿科技发展与投资布局
- 【动态规划】磁带问题
- PCIe(一)——基础知识
- log4j-1.x 日志脱敏 扩展PatternLayout类+修改log4j.properties
- 北斗4G遥测终端 北斗4G双模通信遥测终端机
- 亏大了!一男子薅羊毛 13 万被判 3 年
- 新手入门必选的音乐剪辑软件分享?
- 矩阵的特征值与特征向量及性质及相似矩阵
- 量子前沿 | 单光子,为什么是量子科技的“源头”?