重塑 OpenCV 图像 (numpy) 尺寸

Reshaping OpenCV Image (numpy) Dimensions

我需要将通过 cv2 加载的 numpy 数组中的图像转换为其卷积层的深度学习库 mxnet 的正确格式。

我目前的图片形状如下:(256, 256, 3), or (height, width, channels).

据我所知,这实际上需要是 (3, 256, 256),或 (channels, height, width)。

不幸的是,我对 numpy/python opencv 的了解还不足以了解如何正确操作数组。

我发现我可以通过 cv2.split 将数组拆分为通道,但我不确定如何以正确的格式再次组合它们(我不知道是否使用 cv2.split是最优的,或者如果numpy中有更好的方法)。

感谢您的帮助。

您可以按如下方式使用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)

arr.transpose(2,0,1).shape
# (3, 256, 256)