我正在使用OpenCV python加载图像作为灰度图像,因为该图像的形状为(125, 125)
。但是,我需要将形状设为(125, 125, 1)
,其中1表示通道数(因为是灰度,所以1)。
img = cv2.imread('/path/to/image.png', 0)
print(img.shape)
# prints (125, 125)
现在,我需要将img
的形状转换为(125, 125, 1)
答案 0 :(得分:3)
最简单的方法是使用numpy
indexing and np.newaxis
:
img = np.ones((125, 125)) # img.shape: (125, 125)
img_3d = img[..., np.newaxis] # img_3d.shape: (125, 125, 1)
如果只需要额外的维度即可将数据传递给另一个函数,则这特别方便,因此您只需传递花式索引数组即可。
答案 1 :(得分:2)
尝试np.expand_dims
:
In [1]: import numpy as np
In [2]: img = np.ones((125, 125))
In [3]: img.shape
Out[3]: (125, 125)
In [4]: img = np.expand_dims(img, axis=-1)
In [5]: img.shape
Out[5]: (125, 125, 1)
答案 2 :(得分:0)
import numpy as np
a = np.random.rand(5,5)
b = a.reshape(5,5,1)
b = a.reshape(1,5,5)
b = a.reshape(1,5,5,1)
任何想要的形状