В Python форма изображения с одним каналом является проблемой - PullRequest
0 голосов
/ 13 ноября 2018

Я взял изображение 256x256 RGB и переключил его на YCbCr,

Я создал код для импорта только канала Y

Вот мой код:

from PIL import Image
import numpy as np

im = Image.open ('test.bmp')
img = im.convert ('YCbCr')
arr_img = np.asarray (img)
arr_img = arr_img [:,:, 0]

img = Image.fromarray (arr_img)
img.show ()

После этого я создал изображение с желаемым каналом Y.

Я был счастлив

Но проблема здесь.

Я запустил этот код

print (np.shape (arr_img))

Здесь я хочу получить (256, 256, 1).

Однако вышеприведенный код выводится (256, 256).

Поэтому я изменил "arr_img =arr_img [:,:, 0] "to" arr_img = arr_img [:,:,: 1] ".

Однако он не запустился из-за ошибки.

Я сделалRGB изображение в изображение с тремя каналами YCbCr,

Я думал, что это будет размер (256, 256, 1), когда я импортировал только первый канал, "Y"

Как можноЯ получаю форму (256, 256, 1)?

Ответы [ 2 ]

0 голосов
/ 14 августа 2019

Numpy имеет встроенную функцию np.expand_dims() для добавления дополнительного измерения.

Пример:

a = np.random.randn(2,3)

a.shape

(2, 3)

a = np.expand_dims(a, axis=2)

a.shape

(2, 3, 1)
0 голосов
/ 13 ноября 2018

Можно вручную добавить недостающий размер:

arr_img = np.zeros( [256,256] )

arr_img = arr_img.reshape( * arr_img.shape, 1 )

...