Spaces:
Running
on
Zero
Running
on
Zero
| from PIL import Image | |
| import numpy as np | |
| import numpy as np | |
| import cv2 as cv | |
| import matplotlib.pyplot as plt | |
| if __name__ == "__main__": | |
| from argparse import ArgumentParser | |
| parser = ArgumentParser() | |
| parser.add_argument("--im_A_path", default="assets/toronto_A.jpg", type=str) | |
| parser.add_argument("--im_B_path", default="assets/toronto_B.jpg", type=str) | |
| parser.add_argument("--save_path", default="demo/roma_warp_toronto.jpg", type=str) | |
| args, _ = parser.parse_known_args() | |
| im1_path = args.im_A_path | |
| im2_path = args.im_B_path | |
| save_path = args.save_path | |
| img1 = cv.imread(im1_path,cv.IMREAD_GRAYSCALE) # queryImage | |
| img2 = cv.imread(im2_path,cv.IMREAD_GRAYSCALE) # trainImage | |
| # Initiate SIFT detector | |
| sift = cv.SIFT_create() | |
| # find the keypoints and descriptors with SIFT | |
| kp1, des1 = sift.detectAndCompute(img1,None) | |
| kp2, des2 = sift.detectAndCompute(img2,None) | |
| # BFMatcher with default params | |
| bf = cv.BFMatcher() | |
| matches = bf.knnMatch(des1,des2,k=2) | |
| # Apply ratio test | |
| good = [] | |
| for m,n in matches: | |
| if m.distance < 0.75*n.distance: | |
| good.append([m]) | |
| # cv.drawMatchesKnn expects list of lists as matches. | |
| draw_params = dict(matchColor = (255,0,0), # draw matches in red color | |
| singlePointColor = None, | |
| flags = 2) | |
| img3 = cv.drawMatchesKnn(img1,kp1,img2,kp2,good,None,**draw_params) | |
| Image.fromarray(img3).save("demo/sift_matches.png") | |