目标

在本章中,

  • 我们将学习另一个拐角检测器: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拐角检测器和益于跟踪的特征 | 三十八相关推荐

  1. OpenCV学习笔记(三十六)——Kalman滤波做运动目标跟踪 OpenCV学习笔记(三十七)——实用函数、系统函数、宏core OpenCV学习笔记(三十八)——显示当前FPS OpenC

    OpenCV学习笔记(三十六)--Kalman滤波做运动目标跟踪 kalman滤波大家都很熟悉,其基本思想就是先不考虑输入信号和观测噪声的影响,得到状态变量和输出信号的估计值,再用输出信号的估计误差加 ...

  2. opencv镜像_DX200操作要领—PAM与镜像平移变换(三十八)

    6.4 PAM功能 6.4.1 PAM功能 再现中的位置修改功能 (PAM 功能:Position Adjustment Manual) ,可在查看机器人动作状况的同时,在不停止机器人的情况下,通过简 ...

  3. OpenCV——Harris、Shi Tomas、自定义、亚像素角点检测

    在图像处理和与计算机视觉领域,兴趣点(interest points),或称作关键点(keypoints).特征点(feature points) 被大量用于解决物体识别,图像识别.图像匹配.视觉跟踪 ...

  4. OpenCV系列之理解特征 | 三十六

    目标 在本章中,我们将尝试理解什么是特征,为什么拐角重要等等 解释 你们大多数人都会玩拼图游戏.你会得到很多小图像,需要正确组装它们以形成大的真实图像.问题是,你怎么做?将相同的理论投影到计算机程序上 ...

  5. [Python图像处理] 三十八.OpenCV图像增强和图像去雾万字详解(直方图均衡化、局部直方图均衡化、自动色彩均衡化)

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  6. 快速傅里叶变换python_【原创】OpenCV-Python系列之傅里叶变换(三十八)

    OpenCV-Python系列之傅里叶变换 傅里叶变换 我们生活在时间的世界中,早上7:00起来吃早饭,8:00去挤地铁,9:00开始上班...以时间为参照就是时域分析. 但是在频域中一切都是静止的! ...

  7. “约见”面试官系列之常见面试题第三十八篇之js常见的继承方式(建议收藏)

    1.原型链继承 核心: 将父类的实例作为子类的原型 将构造函数的原型设置为另一个构造函数的实例对象,这样就可以继承另一个原型对象的所有属性和方法,可以继续往上,最终形成原型链 父类 // 定义一个动物 ...

  8. BizTalk开发系列(三十八)微软BizTalk Server定价和许可[解读]

    更多内容请查看:BizTalk动手实验系列目录                       BizTalk 开发系列 做BizTalk的项目一段时间了,但是对BizTalk的价格和许可还不是很了解.给 ...

  9. ASM 翻译系列第三十八弹:ASM数据清理

    原作者:Bane Radulovic 译者:    魏兴华 审核:    魏兴华 DBGeeK社区联合出品 原文链接:http://asmsupportguy.blogspot.sg/2015/12/ ...

最新文章

  1. 基本数据类型(列表,元祖,字典,集合)
  2. vue php企业站案例,vue 开发企业微信整合案例分析
  3. Linux:shell脚本命令: /dev/null 21 的理解
  4. [转载] Java中的50个关键字
  5. mac双系统时间不统一的解决方法_墨兰不开花最好解决,教你几招好方法,时间一到就窜花芽...
  6. new 对象时的暗执行顺序
  7. mock server java_MockServer 简单示例
  8. 金蝶服务器选项没有账套信息,金蝶财务软件帐套属性设置保存和帐套启用报错的解决方法...
  9. 西电计科院Python程序设计随课笔记(李光夏)
  10. 关于checkbox的removeClass属性
  11. 【mongo系列】 六、mongo分片集群
  12. 适用选择并遮住抠人物头发丝
  13. 微服务架构总结性介绍 (深度好文)
  14. JAVA NIO文件映射、通道、流读写文件示例
  15. 骁龙780G和骁龙768G参数对比 骁龙780G和骁龙768G差距大不大
  16. win10浏览器正常访问,但无法进行下载(解决方法)
  17. 科学计算机sd mode使用方法,你是否知道科学计算器的使用方法
  18. solr8.3集群配置
  19. Revit2020以及Revit2019安装以及激活配置教程
  20. 字符串以特定方式转换为列表

热门文章

  1. ABAQUS错误代码system error code 1073741819
  2. 北京航空航天大学王田苗教授:人工智能与机器人前沿科技发展与投资布局
  3. 【动态规划】磁带问题
  4. PCIe(一)——基础知识
  5. log4j-1.x 日志脱敏 扩展PatternLayout类+修改log4j.properties
  6. 北斗4G遥测终端 北斗4G双模通信遥测终端机
  7. 亏大了!一男子薅羊毛 13 万被判 3 年
  8. 新手入门必选的音乐剪辑软件分享?
  9. 矩阵的特征值与特征向量及性质及相似矩阵
  10. 量子前沿 | 单光子,为什么是量子科技的“源头”?