class SIFT(object): """class for SIFT""" def __init__(self, num_points=NUM_POINTS): """contructor""" super(SIFT, self).__init__() self.algo = cv2.xfeatures2d.SIFT_create(num_points) def get_key_points_n_discriptors(self, gray): """method for extracting SIFT features and their descriptors""" return self.algo.detectAndCompute(gray, None) def visualise(self, gray): """to visualise sift algorithm ouput""" kp, des = self.algo.detectAndCompute(gray, None) imgf = cv2.drawKeypoints(gray, kp, np.array([[]])) plt.figure(figsize=(12, 8)) plt.imshow(imgf) plt.show() if __name__ == "__main__": sift = SIFT(num_points=500) data_folder_path = "./../data/viewpoints/chatnoir/test" file_path = f"{data_folder_path}/image_color/img1.png" img = DataLoader.load_img(file_path) gray = ProcImg.get_gray_img(img) sift.visualise(gray)
import os from utils.data_loader import DataLoader from utils.proc_img import ProcImg from config import * if __name__ == "__main__": data_folder_path = DataLoader.get_data_path(DATA_FOLDER, data_collection, data_object) img_dir = f'{data_folder_path}/image_{"color" if clr_o_grey else "gray"}' homg_dir = f'{data_folder_path}/homography' print(f"available images : {os.listdir(img_dir)}\n") img = DataLoader.load_img(f'{img_dir}/img1.png') gray = ProcImg.get_gray_img(img) kp, des = feature_point_detector.get_key_points_n_discriptors(gray) feature_point_detector.visualise(gray) imgf = cv2.drawKeypoints(gray, kp, img) for file in sorted(os.listdir(img_dir)): if file != "img1.png": img2_num = file[3] print(f"loading img : {file}") img2 = DataLoader.load_img(f'{img_dir}/{file}') gray2 = ProcImg.get_gray_img(img2) kp2, des2 = feature_point_detector.get_key_points_n_discriptors( gray2) img2f = cv2.drawKeypoints(gray2, kp2, img2)