fr/fr_env/lib/python3.8/site-packages/imutils/feature/harris.py

27 lines
874 B
Python

import cv2
import numpy as np
from .helpers import corners_to_keypoints
class HARRIS:
def __init__(self, blockSize=2, apertureSize=3, k=0.1, T=0.02):
self.blockSize = blockSize
self.apertureSize = apertureSize
self.k = k
self.T = T
def detect(self, img):
# convert our input image to a floating point data type and then
# compute the Harris corner matrix
gray = np.float32(img)
H = cv2.cornerHarris(gray, self.blockSize, self.apertureSize, self.k)
# for every (x, y)-coordinate where the Harris value is above the
# threshold, create a keypoint (the Harris detector returns
# keypoint size a 3-pixel radius)
kps = np.argwhere(H > self.T * H.max())
kps = [cv2.KeyPoint(pt[1], pt[0], 3) for pt in kps]
# return the Harris keypoints
return kps