Угловой детектор Ши-Томаси в OpenCV

задняя часть

Угловой детектор Ши-Томаси в OpenCV

В предыдущем блоге был представлен угловой детектор Харриса., в этом блоге будет представлен еще один угловой детектор: угловой детектор Ши-Томаси.

  • Угловой детектор Ши-Томаси - это оптимизация углового детектора Харриса, и эффект лучше;

  • cv2.goodFeaturesToTrack(), найти N самых сильных углов на изображении с помощью метода Ши-Томаси (или обнаружения углов Харриса). И он хорошо работает в отслеживании объектов.

1. Рендеринг

Эффект детектора углов исходного изображения VS Harris выглядит следующим образом: 在这里插入图片描述Исходное изображение VS Shi-Tomasi с обнаружением углов выглядит следующим образом:Видно, что Ши-Томаси действительно лучше, и все углы детектируются успешно;在这里插入图片描述

2. Исходный код

# Shi-Tomasi角点检测是Harris角点检测的优化,更准确,会检测出N个最强角点;

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('images/polygon.jpg')

plt.subplot(1, 2, 1)
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.xticks([])
plt.yticks([])
plt.title("origin")

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

corners = cv2.goodFeaturesToTrack(gray, 25, 0.01, 10)
corners = np.int0(corners)

for i in corners:
    x, y = i.ravel()
    cv2.circle(img, (x, y), 3, 255, -1)

plt.subplot(1,2,2)
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.xticks([])
plt.yticks([])
plt.title("Shi-Tomasi res")
plt.show()

Ссылаться на