import cv2
import numpy as np

class Read_image_and_Process_image:
    def __init__(self) -> None:
        pass
    def get_data(self, path):
        '''讀檔'''
        img_size = 512 # 縮小後的影像
        try:
            img_arr = cv2.imread(path, cv2.IMREAD_COLOR) # 讀檔(彩色)
            # img_arr = cv2.imread(path, cv2.IMREAD_GRAYSCALE) # 讀檔(灰階)
            resized_arr = cv2.resize(img_arr, (img_size, img_size)) # 濤整圖片大小
        except Exception as e:
            print(e)
        
        return resized_arr
    
    def Data_Augmentation_Image(self, path):
        resized_arr = []

        for p in path:
            img_size = 512 # 縮小後的影像
            try:
                img_arr = cv2.imread(p, cv2.IMREAD_COLOR) # 讀檔(彩色)
                # img_arr = cv2.imread(path, cv2.IMREAD_GRAYSCALE) # 讀檔(灰階)
                resized_arr.append(cv2.resize(img_arr, (img_size, img_size))) # 濤整圖片大小
            except Exception as e:
                print(e)
        
        return np.array(resized_arr)

    def image_data_processing(self, data, label):
        '''讀檔後處理圖片'''
        img_size = 512
        data = np.asarray(data).astype(np.float32) # 將圖list轉成np.array
        data = data.reshape(-1, img_size, img_size, 3)  # 更改陣列形狀
        label = np.array(label)                         # 將label從list型態轉成 numpy array
        return data, label
    
    def normalization(self, images):
        imgs = []
        for img in images:
            img = np.asarray(img).astype(np.float32) # 將圖list轉成np.array
            img = img / 255                     # 標準化影像資料
            imgs.append(img)

        return np.array(imgs)
    
    # def load_numpy_data(self, file_names):
    #     '''載入numpy圖檔，並執行影像處理提高特徵擷取'''
    #     i = 0
    #     numpy_image = []
    #     original_image = []
    #     for file_name in file_names:
    #         compare = str(file_name).split(".")
    #         if compare[-1] == "npy":
    #             image = np.load(file_name) # 讀圖片檔
    #             numpy_image.append(image) # 合併成一個陣列
    #         else:
    #             original_image.append(file_name)

    #     original_image = self.get_data(original_image)

    #     for file in original_image:
    #         numpy_image.append(file)
            
    #     return numpy_image

    def make_label_list(self, length, content):
        '''製作label的列表'''
        label_list = []
        for i in range(length):
            label_list.append(content)
        return label_list