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)
Ejemplo n.º 2
0
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)