import cv2 import numpy as np SOURCE_IMAGE='../lisbon1.jpg' OUTPUT_IMAGE='harris_lisbon1.jpg' ## kép beolvasása img = cv2.imread(SOURCE_IMAGE); ## a képet szürkeárnyalatossá konvertáljuk gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ## sarokpontok keresése Harris sarokdetektorral ## - meg kell adnunk az alábbi paramétereket: blockSize = 2 # az ablakméret a sajátérték és sajátvektor számításhoz apertureSize = 3 # a Sobel operátor ablakmérete k = 0.004 # a Harris sarokdetektor paramétere (lásd a képletet a leírásban) gray_img = np.float32(gray_img) cornerness = cv2.cornerHarris(gray_img, blockSize, apertureSize, k) #cornerness = cv2.normalize(cornerness,None) cv2.imwrite('cornerness.jpg', cornerness) ## a kapott kép még csak a sarkossági válaszfüggvényt tartalmazza ## ahhoz, hogy ténylegesen sarokpontokat kapjunk küszöbölnünk kell ## kiszámoljuk a minimális és maximális sarkosságot a képen és ## határozzuk meg a küszöböt (ez képenként változhat). minval, maxval, _, _ = cv2.minMaxLoc(cornerness) threshold = 0.06 * maxval print("min:" + str(minval)) print("max:" + str(maxval)) ret, corner_img = cv2.threshold(cornerness, threshold, 255, cv2.THRESH_BINARY); cv2.imwrite(OUTPUT_IMAGE, corner_img)