Как расширить и заполнить третье затемнение черно-белого изображения - PullRequest
1 голос
/ 27 апреля 2019

У меня есть черно-белое изображение с (224,224) формой, но я хочу иметь (224,224,3), поэтому мне нужно увеличить затемнение, но не с пустым значением, поэтому np.expand_dims или np.atleast_3d не можетмне не поможетКак я могу сделать это правильно?Спасибо.

Что я использую:

from PIL import Image
img = Image.open('data/'+link)
rsize = img.resize((224,224))
rsizeArr = np.asarray(rsize)

1 Ответ

1 голос
/ 27 апреля 2019

Когда мы используем numpy.dstack(), нам не нужно расширять измерение вручную, оно позаботится об этой работе и сложит ее вдоль третьей оси, что мы хотим.

In [4]: grayscale = np.random.random_sample((224,224))

# make it RGB by stacking the grayscale image along depth dimension 3 times
In [5]: rgb = np.dstack([grayscale]*3)

In [6]: rgb.shape
Out[6]: (224, 224, 3)

Для вашего конкретного случая это должно быть:

rsize_rgb = np.dstack([rsize]*3)

По какой-то причине, если вы все еще хотите увеличить размер вашего изображения в градациях серого на 1, а затем сделать его как RGB-изображение, тогда вы можете использовать numpy.concatenate() как в:

In [9]: rgb = np.concatenate([grayscale[..., np.newaxis]]*3, axis=2)
In [10]: rgb.shape
Out[10]: (224, 224, 3)

Для вашего конкретного случая это будет:

rsize_rgb = np.concatenate([rsize[..., np.newaxis]]*3, axis=2)
...