一、原理

我们知道Harris角点检测的打分公式为:Harris角点检测
R = λ1λ2 - k(λ1 + λ2)²
但是Shi-Tomasi使用的打分函数为:
R = min(λ1, λ2)
如果打分超过阈值,我们就认为它是一个角点。我们可以把它绘制到λ1~λ2空间中,就会得到下图:
从这幅图中,我们可以看出来只有当λ1和λ2都大于最小值时,才被认为是角点(绿色区域)。

二、函数及代码

OpenCV提供了函数cv.goodFeaturesToTrack()。这个函数可以帮助我们使用Shi-Tomasi方法获取图像中的N个最好的角点。
goodFeaturesToTrack(image, maxCorners, qualityLevel, minDistance, corners=None, mask=None, blockSize=None, useHarrisDetector=None, k=None)
image:输入图像,一般是灰度图像。
maxCorners: 想要检测到的角点数目。
qualtyLevel: 角点的质量水平,0-1之间。
它代表了角点的最低质量,实际用于过滤角点的最小特征值是qualtyLevel与图像中最大特征值的乘积,所以                              qualtyLevel的值不应超过1(常用的值为0.1或0.01)。低于这个值的所有角点都会被忽略。
minDistance: 两个角点之间的最短欧式距离。
mask: 是一幅像素值为布尔类型的像素,用于指定输入图像中蚕吐角点计算的像素点。
blockSize:计算导数的自相关矩阵时指定点的领域,默认为3,采用小窗口计算的结果比单点(也就是blockSize为1)计算的效                  果要好。
useHarrisDetector: 默认值为0,若非0,则函数使用Harris的角点定义

K: 当 useHarrisDetector非0,则K为用于设置hessian自相关矩阵即对hessian行列式的相对权值的权值系数。

根据这些信息,函数就能在图像上找到角点。所有低于质量水平的角点都会被忽略。然后再把合格角点按角点质量进行降序排列。函数会采用角点质量最高的那个角点,然后将它附近(最小距离之内)的角点都删掉。按照这样的方式最后返回N个最佳角点。
import cv2 as cv
import numpy as np
from matplotlib import pyplot as pltimg = cv.imread('img/blox.jpg')
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)corners = cv.goodFeaturesToTrack(gray, 40, 0.01, 10)
'''
goodFeaturesToTrack(image, maxCorners, qualityLevel, minDistance, corners=None, mask=None, blockSize=None, useHarrisDetector=None, k=None)
imgae : 灰度图像
maxCorners: 你想要检测到的角点的数目
qualityLevel: 角点的质量水平,取值范围【0-1】,他代表了角点的最低质量,低于这个数的所有角点都会被忽略
minDistance: 两个角点之间的最短欧氏距离
'''
#int0 直接把小数后面抛弃取整,并不是四舍五入
corners = np.int0(corners)
print(len(corners))
for i in corners:x, y = i.ravel()cv.circle(img, (x, y), 3, 255, -1)cv.namedWindow('img',cv.WINDOW_AUTOSIZE)
cv.imshow('img',img)
cv.waitKey(0)
cv.destroyAllWindows()
可以看出,比Harris角点检测的效果好了很多

OpenCV学习笔记-Shi-Tomasi角点检测相关推荐

  1. OpenCV入门学习笔记之Harris角点检测与SIFT特征匹配算法

    1. 写在前面 这篇文章整理两个图像处理中非常重要的算法,一个是Harris角点检测算法,另一个是SIFT特征匹配算法,这两个算法本质上还是去找图像里面的关键特征点,帮助我们后续更好的理解图像以及做各 ...

  2. 【机器视觉学习笔记】Harris 角点检测算法(C++)

    目录 原理 算法步骤 优缺点 源码 效果 原图 输出 平台:Windows 10 20H2 Visual Studio 2015 OpenCV 4.5.3 本文摘自2.Harris角点检测算法 -- ...

  3. 【opencv学习】【Harris角点检测】

    下面看代码: import cv2 import numpy as np# 1.cv2.cornerHarris(img, blocksize, kszie, k) # 找出图像中的角点 # 参数说明 ...

  4. 某人写的openCV学习笔记

    原文地址:某人写的openCV学习笔记作者:拔剑 http://blog.csdn.net/thefutureisour 我的OpenCV学习笔记(25):c++版本的高斯混合模型的源代码完全注释 之 ...

  5. 某人写的openCV学习笔记_拔剑-浆糊的传说_新浪博客

    http://blog.csdn.net/thefutureisour 我的OpenCV学习笔记(25):c++版本的高斯混合模型的源代码完全注释 之前看到过C版本的,感觉写的很长,没有仔细看,但是C ...

  6. OpenCV学习笔记(四十六)——FAST特征点检测features2D OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui OpenCV学习笔记(四十八)——PCA算

    OpenCV学习笔记(四十六)--FAST特征点检测features2D 特征点检测和匹配是计算机视觉中一个很有用的技术.在物体检测,视觉跟踪,三维常年关键等领域都有很广泛的应用.这一次先介绍特征点检 ...

  7. opencv学习笔记(二):基于肤色的人手检测

    opencv学习笔记(二):基于肤色的人手检测 原文:http://blog.csdn.net/wzmsltw/article/details/50849810 先写了人手的检测程序,下一步基于检测程 ...

  8. OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope

    OpenCV学习笔记(二十六)--小试SVM算法ml 总感觉自己停留在码农的初级阶段,要想更上一层,就得静下心来,好好研究一下算法的东西.OpenCV作为一个计算机视觉的开源库,肯定不会只停留在数字图 ...

  9. QT+opencv学习笔记(5)——霍夫直线检测、圆检测及椭圆检测

    开发环境为:win10+QT5.8+opencv3.2 Hough变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛.最基本的Hough变换是从黑白图像中检测直线,还可以经过改进检测圆.椭 ...

  10. 9月10日OpenCV学习笔记——Mask、彩色直方图、人脸检测

    文章目录 前言 一.Mask 二.彩色直方图 三.画出基本图形 四.图片上显示文本 五.人脸检测 前言 本文为9月10日OpenCV学习笔记--Mask.彩色直方图.人脸检测,分为五个章节: Mask ...

最新文章

  1. mysql5.5主从同步配置文件_Windows下的 mysql 5.5主从同步配置
  2. D - Delete Prime Gym - 102875D
  3. oracle 批量 重建索引,Oracle重建索引Shell脚本、SQL脚本分享
  4. 云世界,一切如梦幻,数据也玩虚拟化。 SQL Server 2019 新特性系列一:数据虚拟化
  5. 中国联通辟谣“不支持华为”:恶意诽谤 将通过法律手段维护权益
  6. docker安装tomcat下的日志查看
  7. Jmeter之Bean shell使用(二)——断言加密的响应信息
  8. android跑马灯代码,Android中实现跑马灯效果
  9. Metasploit学习2-后门制作
  10. Rejected connection from xx.xx.xx.xx, address already has the configured maximum of 10 connections
  11. Android 关于ApplicationInfo flags快速了解
  12. python中的pip什么意思-python中的pip
  13. go获取当前工作路径
  14. android camera慢动作,慢动作相机app下载-慢动作相机软件 安卓版v1.1-PC6安卓网
  15. 第015篇:ArcGIS中标注的使用方法(二)
  16. 蚁群算法ACO求解连续函数最值问题
  17. 安卓10侧边返回_安卓10.0内测版出现新版手势操作:取消返回键、全靠Home胶囊完成...
  18. Windows C盘清理方法
  19. 星际无限 | 2021年IPFS应该关注的重点是什么?
  20. python获取函数名、类名

热门文章

  1. 三消游戏死局算法的解析
  2. 对于【没有苹果开发账号,只有p12文件和mobileprovision文件进行打包】文章的补充
  3. windows10开启http代理服务
  4. Python 五角星的画法 five star
  5. 【分治算法-02】算法经典问题
  6. 计算机开机响三短嘀嘀,电脑显示器不亮,开机2短3长报警音什么情况啊?:电脑...
  7. 在移动硬盘中安装WIN10
  8. 电子计算机的发展经历了四代
  9. [数学 FFT] Codechef July Challenge 2017 #APRPS Irrational Root
  10. 推送流程(极光推送)