import cv2 import numpy as np SOURCE_IMAGE1='../lisbon1.jpg' SOURCE_IMAGE2='../lisbon2.jpg' OUTPUT_IMAGE1='../keypoints_lisbon1.jpg' OUTPUT_IMAGE2='../keypoints_lisbon2.jpg' MATCHING_IMAGE='matching_lisbon1_lisbon2.jpg' ## képek beolvasása img1 = cv2.imread(SOURCE_IMAGE1); img2 = cv2.imread(SOURCE_IMAGE2); ## a képet szürkeárnyalatossá konvertáljuk gray_img1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) gray_img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY) ## jellemzőpontok detektálása #orb = cv2.ORB_create() #keypoints1 = orb.detect(gray_img1) #keypoints2 = orb.detect(gray_img2) ## kulcspont leírók számítása #keypoints1, descriptors1 = orb.compute(gray_img1, keypoints1) #keypoints2, descriptors2 = orb.compute(gray_img2, keypoints2) ## jellemzőpontok detektálása surf = cv2.xfeatures2d.SURF_create() keypoints1 = surf.detect(gray_img1, None) keypoints2 = surf.detect(gray_img2, None) ## kulcspont leírók számítása keypoints1, descriptors1 = surf.compute(gray_img1, keypoints1) keypoints2, descriptors2 = surf.compute(gray_img2, keypoints2) ## kulcspontok kirajzolása out_img1 = cv2.drawKeypoints(gray_img1, keypoints1, descriptors1, color=(255, 0, 255), flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) out_img2 = cv2.drawKeypoints(gray_img2, keypoints2, descriptors2, color=(255, 0, 255), flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) cv2.imwrite(OUTPUT_IMAGE1, out_img1) cv2.imwrite(OUTPUT_IMAGE2, out_img2) ## pontpárok keresése bfMatcher = cv2.BFMatcher(cv2.NORM_L2, crossCheck=True) ## brute-force párosító ## bináris leírókhoz, mint az ORB, ## a Hamming-távolságot javasolt használni matches = bfMatcher.match(descriptors1, descriptors2); #matching_img = cv2.drawMatches(img1,keypoints1,img2,keypoints2, matches[:10], flags=cv2.DRAW_MATCHES_FLAGS_DEFAULT) img3 = cv2.drawMatches( img1,keypoints1, img2,keypoints2, matches[:50], None, flags=2) cv2.imwrite(MATCHING_IMAGE, img3)