Я думаю, вы полностью ошиблись. Выходной сигнал типа «dst» -> Помните, что dst, который возвращается функцией cv2.cornerHarris - это матрица с плавающей запятой, содержащая углы Харриса, обнаруженные на изображении.
Пример кода, который я использовал в python, здесь для вычисления углов в изображении. Вы можете использовать возвращаемые данные и преобразовать их в тип KeyPoints. Обратите внимание: структура ключевой точки определяется как OpenCV KeyPoint Structure, и каждая ключевая точка задается координатами изображения 2d координат типа Point2f. Просто конвертируйте каждый обнаруженный угол в Point2f и используйте его для вашей просеивающей функции.
#sample code to read image and estimate the harris corner.
import cv2
import numpy as np
def cvComputeHarrisCorner(img):
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray = np.float32(gray)
dst = cv2.cornerHarris(gray,2,3,0.04)
dst = cv2.dilate(dst,None)
img[dst>0.01*dst.max()]=[0,0,255]
return img
def main():
img = cv2.imread('img.jpg')
cvComputeHarrisCorner(img)
cv2.imshow('dst',img)
if cv2.waitKey(0) & 0xff == 27:
cv2.destroyAllWindows()
if __name__ == "__main__":
main()
Вместо того, чтобы объяснить все, что вам нужно здесь, я бы направить вас к этой обучающей программе OpenCV Python, который очень хорошо написано и объяснено в багажнике. Пройдите их, и вы постепенно узнаете о концепции.
OpenCV Python Tutorials
, пожалуйста, включите код для преобразования каждого обнаруженного угла в Point2f –