使用cv2.imwrite()无法保存GREYSCALE .png图像

时间:2020-07-15 17:10:37

标签: python numpy opencv

我已经使用tf.keras.preprocessing.image.ImageDataGenerator生成了图像,并绘制了使用matplotlib生成的图像,结果如下:

enter image description here

这实际上是我想要保存在文件系统中的内容,但是由于某种原因,每当我尝试使用cv2.imwrite()函数编写图像时,我都会得到:

enter image description here

在某些情况下,保存的图像完全空白(所有像素均为白色)。这是代码:

cnt = 0
for image, label in zip(augmented_images, labels):
  cnt += 1
  path = os.path.join(augmented_raw_images_train_dir,str(int(label[0])),"aug_"+str(cnt)+".png")
  cv2.imwrite(path, image[0])

请记住,图像的大小为1,因此image[0]实际上是大小为(150, 150, 1)的n维numpy数组。

1 个答案:

答案 0 :(得分:2)

数据中的像素值很可能在[0.0,1.0]范围内。您应先将它们转换为[0,255]范围,然后再通过opencv保存它们。

cnt = 0
for image, label in zip(augmented_images, labels):
  cnt += 1
  path = os.path.join(augmented_raw_images_train_dir,str(int(label[0])),"aug_"+str(cnt)+".png")
  image_int = np.array(255*image[0], np.uint8)
  cv2.imwrite(path, image_int)

如果值在[-1,1]范围内,则可以进行相应调整。