У меня есть следующий код Python, где я сохраняю некоторые изображения формы 326x490x3
в виде numpy
массивов для предварительной обработки на более позднем этапе. Я хочу сохранить мои изображения в массиве 4D NumPy, чтобы позже я смог обработать их партиями. Код работает нормально, но я обнаружил, что когда я конвертирую каждый 3D-элемент массива 4D обратно в RGB-изображение, я просто получаю статическое изображение.
КОД
data = np.zeros((129, 326, 490, 3))
image_path = '0.jpg'
img = Image.open(image_path)
data[0,:,:,:] = np.asarray(img)
im = Image.fromarray(data[0], 'RGB')
im.show()
OUTPUT :
Но когда я пытаюсь отобразить срез трехмерного массива из массива 4D в виде градаций серого , он работает нормально.
код
data = np.zeros((129, 326, 490, 3))
image_path = '0.jpg'
img = Image.open(image_path)
data[0,:,:,:] = np.asarray(img)
im = Image.fromarray(np.dot(data[0], [0.299, 0.587, 0.114]))
im.show()
OUTPUT
Решение, приведенное здесь , работает, как и ожидалось, когда я сохраняю изображение в трехмерном массиве и снова переключаюсь на изображение PIL.
КОД
data = np.zeros((129, 326, 490, 3))
image_path = '0.jpg'
img = Image.open(image_path)
im = Image.fromarray(np.asarray(img), 'RGB')
im.show()
OUTPUT
Может кто-нибудь объяснить это поведение? Я не понимаю, как код работает, как и ожидалось, для трехмерного массива, но работает иначе для среза трехмерного массива 4D.