Shi-Tomasi角检测是史建波(Jianbo Shi)和卡罗·托马西(Carlo Tomasi)在哈里斯角检测基础上提出的改进角检测的方法。
OpenCV的cv.goodFeaturesToTrack()函数使用Shi-Tomasi角检测器查找图像中的N个最强角,其基本格式如下。
dst=cv.goodFeaturesToTrack(src, maxCorners, qualityLevel, minDistance)
参数说明如下。
dst为返回结果,保存了检测到的角在原图像中的坐标。
src为8位单通道或浮点值图像。
maxCorners为返回的角的最大数量。
qualityLevel为可接受的角的最低质量。
minDistance为返回的角之间的最小欧几里得距离。
Shi-Tomasi角检测
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('five.jpg') #打开图像,默认为BGR格式
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #转换为灰度图像
gray = np.float32(gray) #转换为浮点类型
corners = cv2.goodFeaturesToTrack(gray,6,0.1,100) #检测角,最多6个
corners = np.int0(corners) #转换为整型
for i in corners:
x,y = i.ravel()
cv2.circle(img,(x,y),4,(0,0,255),-1) #用红色圆点标注找到的角
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) #转换为RGB格式
plt.imshow(img)
plt.axis('off')
plt.show() #显示检测结果