opencv_python圖像處理——Harris特徵點檢測器-興趣點檢測

Harris角點檢測的性質:
1)閾值決定角點的數量
2)Harris角點檢測算子對亮度和對比度的變化不敏感(光照不變性)
3)Harris角點檢測算子具有旋轉不變性
4)Harris角點檢測算子不具有尺度不變性

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

# detector parameters
block_size = 3
sobel_size = 3
k = 0.06

image = cv.imread('img/test_harris.jpeg')

print(image.shape)
height = image.shape[0]
width = image.shape[1]
channels = image.shape[2]
print("width: %s  height: %s  channels: %s" % (width, height, channels))

gray_img = cv.cvtColor(image, cv.COLOR_BGR2GRAY)

# modify the data type setting to 32-bit floating point
gray_img = np.float32(gray_img)

# detect the corners with appropriate values as input parameters
corners_img = cv.cornerHarris(gray_img, block_size, sobel_size, k)

# result is dilated for marking the corners, not necessary
kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))
dst = cv.dilate(corners_img, kernel)

# Threshold for an optimal value, marking the corners in Green
# image[corners_img>0.01*corners_img.max()] = [0,0,255]

for r in range(height):
    for c in range(width):
        pix = dst[r, c]
        if pix > 0.05 * dst.max():
            cv.circle(image, (c, r), 5, (0, 0, 255), 0)

image = cv.cvtColor(image, cv.COLOR_BGR2RGB)
plt.imshow(image)
plt.show()

原圖:
在這裏插入圖片描述
結果圖:
在這裏插入圖片描述
不得不提,運行時間挺長的,不是實時出結果。

參考鏈接:
Datawhale 計算機視覺基礎-圖像處理(下)- Task01 Harris特徵點檢測器-興趣點檢測

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章