import cv2 import yaml import numpy as np import os import sys ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) sys.path.insert(0, ROOT_DIR) from components import load_component from utils import evaluation_utils import argparse parser = argparse.ArgumentParser() parser.add_argument('--config_path', type=str, default='configs/sgm_config.yaml', help='number of processes.') parser.add_argument('--img1_path', type=str, default='demo_1.jpg', help='number of processes.') parser.add_argument('--img2_path', type=str, default='demo_2.jpg', help='number of processes.') args = parser.parse_args() if __name__=='__main__': with open(args.config_path, 'r') as f: demo_config = yaml.load(f) extractor=load_component('extractor',demo_config['extractor']['name'],demo_config['extractor']) img1,img2=cv2.imread(args.img1_path),cv2.imread(args.img2_path) size1,size2=np.flip(np.asarray(img1.shape[:2])),np.flip(np.asarray(img2.shape[:2])) kpt1,desc1=extractor.run(args.img1_path) kpt2,desc2=extractor.run(args.img2_path) matcher=load_component('matcher',demo_config['matcher']['name'],demo_config['matcher']) test_data={'x1':kpt1,'x2':kpt2,'desc1':desc1,'desc2':desc2,'size1':size1,'size2':size2} corr1,corr2= matcher.run(test_data) #draw points dis_points_1 = evaluation_utils.draw_points(img1, kpt1) dis_points_2 = evaluation_utils.draw_points(img2, kpt2) #visualize match display=evaluation_utils.draw_match(dis_points_1,dis_points_2,corr1,corr2) cv2.imwrite('match.png',display)