Skip to content
Snippets Groups Projects
Select Git revision
  • tomashb-main-patch-46192
  • main default protected
2 results

app.py

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    brute_force_matching.py 1.21 KiB
    import os
    from cv2 import cv2
    from algorithm.imageprocessing import create_salamander_image
    import glob
    
    min_good_match = 15
    match_dist = 0.75
    def match_single_image(input_image, match_image) -> bool:
        bf = cv2.BFMatcher()
        input_salamander = create_salamander_image(input_image)
        match_salamander = create_salamander_image(match_image)
    
        match = bf.knnMatch(input_salamander.descriptors, match_salamander.descriptors, k=2)
    
        goodmatch = []
        for m, n in match:
            if m.distance < match_dist * n.distance:
                goodmatch.append([m])
        print("good matches", len(goodmatch))
        if len(goodmatch) > min_good_match:
            return True
        return False
    
    def match_file_structure(input_image: str, match_directory: str) -> int:
        # check if input path is valid:
        if os.path.isfile(input_image):
            for folder in os.listdir(match_directory):
                name_list = glob.glob(os.path.join(match_directory, folder, "*_str.*"))
                current_dir = os.path.join(match_directory, folder)
                for filename in name_list:
                    res = match_single_image(input_image, filename)
                    if res:
                        return int(folder)
            return -1
        else:
            return None