logo
Loading...

如何讀取資料夾裡面的數據? - Cupoy

請問,怎麼才能完美的讀取資料夾裡面的數據啊?不知道為什麼我跟著網上的做,結果那個圖片的shape不盡...

ml100,kaggle,期末考,ml100-d101

如何讀取資料夾裡面的數據?

2019/04/24 上午 11:25
機器學習共學討論版
孫億昇
觀看數:22
回答數:1
收藏數:0
ml100
kaggle
期末考
ml100-d101

請問,怎麼才能完美的讀取資料夾裡面的數據啊?不知道為什麼我跟著網上的做,結果那個圖片的shape不盡人意

我用下面的程式去弄,但是所輸出的shape和以往做範例的不同,我也不知該怎麼變化

def read_directory(directory_name):

    for filename in os.listdir(r"./"+directory_name):

        img = cv2.imread(directory_name + "/" + filename)

        array_of_img.extend(img)

    return(array_of_img)

回答列表

  • 2019/04/24 下午 01:26
    陳明佑 (Ming You Chen)
    贊同數:0
    不贊同數:0
    留言數:1

    同學您好, 因為競賽期限快到了, 

    這邊先透露解答讀檔部分的寫法給您參考,

    希望同學繼續加油!!  趕在今天結束前提交答案


    # 初始化 Array, 並設定讀取路徑等參數

    X_train = []

    y_train = []

    X_test = []

    id_test = []

    IMG_SIZE = 150


    # 設定花朵名稱對應的類別碼

    flower_mapping = {'daisy':0, 'dandelion':1, 'rose':2, 'sunflower':3, 'tulip':4}

    flowers = ['daisy', 'dandelion', 'rose', 'sunflower', 'tulip']


    # 定義讀取資料的函數, 將圖檔資料讀取到輸入用的 Array 之中

    def make_train_data(flower_type):

      dir_path = f'{train_path}{flower_type}/'

      for img in tqdm(os.listdir(dir_path)):

          y_train.append(str(flower_mapping[flower_type]))

          path = os.path.join(dir_path, img)

          img = cv2.imread(path,cv2.IMREAD_COLOR)

          img = cv2.resize(img, (IMG_SIZE,IMG_SIZE))        

          X_train.append(np.array(img))  

    def make_test_data():

      dir_path = test_path

      for img in tqdm(os.listdir(dir_path)):

          id_test.append(img[:-4])

          path = os.path.join(dir_path, img)

          img = cv2.imread(path,cv2.IMREAD_COLOR)

          img = cv2.resize(img, (IMG_SIZE,IMG_SIZE))        

          X_test.append(np.array(img))


    # 載入訓練資料 

    for flower in flowers:

        make_train_data(flower)

        print(f'Loading {flower} pictures, X_train length : {len(X_train)}') 


    # 載入測試資料 

    make_test_data() 

    print(len(X_test))