在OpenCV Python中實現Shi-Tomasi角點檢測器


Shi-Tomasi 角點檢測器是Harris角點檢測器的改進演算法。為了實現Shi-Tomasi角點檢測器,OpenCV提供了一個函式`cv2.goodFeaturesToTrack()`。它檢測影像中最強的N個角點。

步驟

要使用Shi-Tomasi角點檢測器檢測影像中的角點,您可以按照以下步驟操作:

  • 匯入所需的庫OpenCVNumPy。確保您已經安裝了它們。

  • 使用`cv2.imread()`方法讀取輸入影像。指定影像的完整路徑。使用`cv2.cvtColor()`方法將輸入影像轉換為灰度影像。

  • 在灰度影像上應用`cv2.goodFeaturesToTrack()`函式。將合適的角點數、質量等級和兩個角點之間的歐幾里得距離作為引數傳遞給該方法。此函式返回影像中作為浮點數的角點。將這些浮點角點轉換為整數。

  • 在輸入影像上繪製角點,作為具有較小半徑的填充圓。

  • 顯示帶有檢測到的角點的影像。

讓我們看看使用Shi-Tomasi角點檢測器檢測影像中角點的示例。

輸入影像

我們將在下面的示例中使用此影像作為輸入檔案。


示例

在這個例子中,我們使用Shi-Tomasi角點檢測器檢測輸入影像中的角點。

# import required libraries import numpy as np import cv2 # read the input image img = cv2.imread('building.jpg') # convert the image to grayscale gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # apply Shi-Tomasi corner detector on gray image # to detect 50 best corners corners = cv2.goodFeaturesToTrack(gray,50,0.01,10) # convert floating points to integers corners = np.int0(corners) # loop over all points and draw corner points as circles for i in corners: x,y = i.ravel() cv2.circle(img,(x,y),3,(0,0,255),-1) # Display image with corner points drawn on it cv2.imshow("Corners", img) cv2.waitKey(0) cv2.destroyAllWindows()

輸出

執行上述Python程式後,將生成以下輸出視窗:


上述輸出影像顯示了使用Shi-Tomasi角點檢測器檢測到的角點。角點以紅色顯示。

更新於:2022年12月2日

908 次瀏覽

啟動您的職業生涯

完成課程後獲得認證

開始
廣告