重塑 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)
我需要将通过 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)