File size: 1,753 Bytes
a80d6bb
 
 
 
 
 
 
 
 
 
 
 
c74a070
a80d6bb
c74a070
 
 
 
 
 
 
 
 
 
 
 
a80d6bb
 
 
 
c74a070
 
 
 
 
 
 
a80d6bb
c74a070
 
 
 
 
 
a80d6bb
c74a070
 
 
 
 
 
 
 
 
 
 
 
a80d6bb
c74a070
a80d6bb
c74a070
a80d6bb
c74a070
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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)