이미지를 numpy 배열로 저장
이미지를 numpy 배열에 로드할 수 없고 다음과 같은 오류가 발생합니다...
ValueError: 입력 배열을 모양(175,217,3)에서 모양(100,100,3)으로 브로드캐스트할 수 없습니다.
기능 코드:
X_train = np.ndarray((nb_train_samples, img_rows_orig, img_cols_orig, 3), dtype=np.uint8) Y_train = np.zeros((nb_train_samples,), dtype='uint8') i = 0 j = 0 for label in labels: image_names_train = os.listdir(os.path.join(train_data_dir, label)) total = len(image_names_train) print(label, total) for image_name in image_names_train: img = cv2.imread(os.path.join(train_data_dir, label, image_name), cv2.IMREAD_COLOR) img = np.array([img]) X_train[i] = img Y_train[i] = j if i % 100 == 0: print('Done: {0}/{1} images'.format(i, total)) i += 1 j += 1 print(i) print('Loading done.') np.save('imgs_train.npy', X_train, Y_train) return X_train, Y_train
이 함수는 malaria_cell_classification_code.zip 파일에서 찾을 수 있는 load_data.py 파일의 일부입니다.
https://ceb.nlm.nih.gov/repositories/malaria-datasets/
X_train과 Y_train을 numpy 배열 대신 목록으로 변경하려고 했습니다. 함수는 np.save 메소드에서 멈춥니다.
import cv2 import numpy as np import ostrain_data_dir = ‘/home/ec2-user/SageMaker/malaria-detection-model/malaria/training’
valid_data_dir = ‘/home/ec2-user/SageMaker/malaria-detection-model/malaria/validation’nb_train_samples = 22045 # training samples
nb_valid_samples = 5513# validation samples
num_classes = 2
img_rows_orig = 100
img_cols_orig = 100def load_training_data():
labels = os.listdir(train_data_dir)
total = len(labels)|_+_|numpy에 이미지를 저장하는 정확하고 표준적인 방법은 무엇입니까?
이미지 크기를 조정한 후 다른 오류가 발생합니다.
X_train = Y_train = list()
X_train.append(img)
Y_train.append(j)
전체 스크립트는 여기에서 찾을 수 있습니다…
https://gist.github.com/shantanuo/cfe0913b367647890451f5ae3f6fb691
#python #이미지 #numpy #opencv