Select Git revision
-
Tomas Berger authoredTomas Berger authored
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