openCV imread来制作灰度图像(高度,宽度,1)

时间:2018-05-30 08:20:16

标签: python opencv

我使用opencv来读取我的灰度图像 但当我把它们看成灰度时:

data_dir = "/.../data/"
images = []
files = glob.glob (data_dir + "*.jpg")
for file in files:
    image = cv2.imread(file, 0)
    images.append(image)

我的图像形状实际上是:

images[0].shape 
  

(2993,670)

如何使用cv2制作它(2993,670,1)?

2 个答案:

答案 0 :(得分:2)

您也可以使用numpy中的np.reshape()函数。这样做:

>>> import numpy as np
>>> image = np.zeros((2993, 670), dtype=np.uint8)
>>> resized_image = np.reshape(image,(2993,670,1))
>>> resized_image.shape
(2993, 670, 1)

答案 1 :(得分:1)

使用来自numpy的np.expand_dims(),因为OpenCV图像只是numpy数组:

>>> import numpy as np
>>> img = np.zeros((3, 3), dtype=np.uint8)
>>> img.shape
(3, 3)
>>> img = np.expand_dims(img, axis=2)
>>> img.shape
(3, 3, 1)

请注意,axis=2告诉要扩展到哪个维度;在您的情况下,您希望它是第三个轴(轴是从0开始的,所以2)。如上文所述,您也可以这样做:

>>> img = img[:, :, np.newaxis]
>>> img.shape
(3, 3, 1)

甚至

>>> img = img[:, :, None]
>>> img.shape
(3, 3, 1)

所有这些都是等价的,不过第一个更自我记录。