我正在為超解析度深度學習網路開發自定義影像資料集。我將影像保存到磁盤并可以創建 HDF5 資料集檔案。這是我正在使用的代碼:
import os, cv2, h5py, glob
import numpy as np
from glob import glob
# define the paths to the dataset
BASE_DATA_PATH = '/usr/local/home/.../esrgan_data'
HR_TRAIN_PATH = os.path.join(BASE_DATA_PATH, 'train_HR')
LR_TRAIN_PATH = os.path.join(BASE_DATA_PATH, 'train_LR')
# create LR and HR image lists
LR_images = glob(LR_TRAIN_PATH '**/*.png')
HR_images = glob(HR_TRAIN_PATH '**/*.png')
# sort the lists
LR_images.sort()
HR_images.sort()
# create an h5 file
with h5py.File('datasets/esrgan_trainDS.h5', 'w') as h5_file:
# create 2 datasets for LR and HR images in the h5 file
lr_ds = h5_file.create_dataset('trainLR', (len(LR_images), 150, 150, 3), dtype='f')
hr_ds = h5_file.create_dataset('trainHR', (len(HR_images), 600, 600, 3), dtype='f')
for i in range(len(LR_images)):
LR_image = cv2.imread(LR_images[i])
HR_image = cv2.imread(HR_images[i])
lr_trainDS[i] = LR_image
hr_trainDS[i] = HR_image
# load the h5 dataset
trainDS = h5py.File('datasets/esrgan_trainDS.h5', 'r')
print('Files in the training dataset: ', list(trainDS.keys()))
訓練資料集中的檔案:['trainHR', 'trainLR']
LRset = trainDS['trainLR']
HRset = trainDS['trainHR']
print('LR dataset shape: ', LRset.shape)
print('HR dataset shape: ', HRset.shape)
LR 資料集形狀:(450, 150, 150, 3) HR 資料集形狀:(450, 600, 600, 3)
我的問題是,當我嘗試從資料集中查看單個影像時,我看到一個黑框,告訴我影像沒有保存或沒有正確加載。
cv2_imshow('', HRset[100])

我基于這篇文章的代碼。代碼運行沒有錯誤——我可以撰寫 f5 檔案,讀取它們并列印檔案屬性。我只是看不到影像,而且沒有錯誤訊息,我不確定我哪里出錯了。
我猜這是一個我沒有看到的簡單錯誤,但我很感激你能提供的任何幫助。謝謝!
uj5u.com熱心網友回復:
您是參考帖子中一個小錯誤的受害者。(我很抱歉;我是那篇文章的作者。顯然沒有人注意到使用錯誤 dtype 創建資料集的錯誤。我更正了該答案以從影像中獲取 dtype,然后在創建資料集時使用它。)
此外,您需要在代碼中添加一些行來查看影像。修復 HDF5 檔案后,將這兩行添加到代碼中以查看影像。(另外,更正 上的小錯字imshow())。修改后的代碼如下:
cv2.imshow('', HRset[100])
cv2.waitKey(0) # waits until a key is pressed in the image window
cv2.destroyAllWindows() # destroys the window showing the image
這些線有什么作用?
cv2.waitKey(0)暫停程式的執行。因此,影像視窗將保持可見。如果您不包含此陳述句,cv2.imshow()則在眨眼間執行,然后程式將關閉它打開的所有視窗。這使得您不太可能在視窗中看到影像。(您發布的黑色影像是影像視窗的殘留物。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/529396.html
下一篇:使用最小二乘法進行色彩校正
