2016-09-08 6 views
2

Мне нужно преобразовать изображение в массив numpy, загруженный cv2, в правильный формат для библиотеки глубокого обучения mxnet для сверточных слоев.Изменение формы изображения OpenCV (numpy) Размеры

Мои текущие изображения имеют следующую форму: (256, 256, 3) или (высота, ширина, каналы).

Из того, что мне сказали, на самом деле это должно быть (3, 256, 256) или (каналы, высота, ширина).

К сожалению, мои знания о numpy/python opencv недостаточно хороши, чтобы знать, как правильно манипулировать массивами.

Я понял, что могу разделить массивы на каналы cv2.split, но я не уверен, как их снова объединить в правильном формате (я не знаю, оптимально ли использование cv2.split , или если есть лучшие способы в numpy).

Спасибо за любую помощь.

ответ

2

Вы можете использовать numpy.rollaxis следующим образом: Если image как форма (height, width, channels)

import numpy as np 

new_shaped_image = np.rollaxis(image, axis=2, start=0) 

Это означает, что 2-й ось new_shaped_image будет 0 места.

Так new_shaped_image.shape будет (channels, height, width)

+0

Спасибо! Это очень полезная команда. – AdmiralJonB