python+OpenCV笔记(二十四):Shi-Tomasi角点检测

Shi-Tomasi角点检测

原理

python+OpenCV笔记(二十二):角点检测原理(Harris角点检测原理、Shi-Tomasi角点检测原理)https://blog.csdn.net/qq_45832961/article/details/122547958OpenCV API

corners = cv2.goodFeaturesToTrack(image, maxCorners, qualityLevel, minDistance)

参数:

  1. image:输入的灰度图像
  2. maxCorners:获取角点数的数目
  3. qualityLevel:该参数指出最低可接受的角点质量水平,在0-1之间
  4. minDistance:角点之间的最小欧氏距离,避免得到相邻特征点

返回值:

  • corners:搜索到的角点,在这里所有低于质量水平的角点被排除掉,然后把合格的角点按质量排序,然后将质量较好的角点附近(小于最小欧式距离)的角点删掉,最后找到maxCorners个角点返回。

代码编写

import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np

src = cv.imread("E:\\qi.png")
img = src.copy()
img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

# 角点检测
corners = cv.goodFeaturesToTrack(img_gray, 1000, 0.01, 10)

# 绘制角点
for i in corners:
    x, y = i.ravel()
    cv.circle(img, (int(x), int(y)), 3, (0, 0, 255), -1)

# 显示图像
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(10, 8), dpi=100)
axes[0].imshow(src[:, :, ::-1])
axes[0].set_title("原图")
axes[1].imshow(img[:, :, ::-1])
axes[1].set_title("Shi-Tomasi角点检测后的图像")
plt.show()

猜你喜欢

转载自blog.csdn.net/qq_45832961/article/details/122578231