|
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) |
|
img2 = cv.imread(im2_path,cv.IMREAD_GRAYSCALE) |
|
|
|
sift = cv.SIFT_create() |
|
|
|
kp1, des1 = sift.detectAndCompute(img1,None) |
|
kp2, des2 = sift.detectAndCompute(img2,None) |
|
|
|
bf = cv.BFMatcher() |
|
matches = bf.knnMatch(des1,des2,k=2) |
|
|
|
good = [] |
|
for m,n in matches: |
|
if m.distance < 0.75*n.distance: |
|
good.append([m]) |
|
|
|
draw_params = dict(matchColor = (255,0,0), |
|
singlePointColor = None, |
|
flags = 2) |
|
|
|
img3 = cv.drawMatchesKnn(img1,kp1,img2,kp2,good,None,**draw_params) |
|
Image.fromarray(img3).save("demo/sift_matches.png") |
|
|