保存为灰色的增强图像(imgaug、imageio、opencv)

Posted

技术标签:

【中文标题】保存为灰色的增强图像(imgaug、imageio、opencv)【英文标题】:Augmented images saved as grey (imgaug,imageio, opencv) 【发布时间】:2021-12-18 15:55:41 【问题描述】:

我正在开始我的第一个计算机视觉项目,并想尝试图像增强来改进我的数据集。 我用 imgaug 试了一下,一切正常,只要我只显示它们。但是一旦我将它们保存到文件中,它们就会变成灰色/蓝色。

这是我正在使用的代码:

import cv2
import imgaug.augmenters as iaa
import imageio as iio
import numpy as np


path = ('C:\\Users\\kathr\\Desktop\\JPG\\cards.jpg')
img = cv2.imread(path)

augmentation= iaa.Sequential([
    iaa.Crop(px=(0,2)),
    iaa.Flipud(0.5),
    iaa.Fliplr(0.5),
    iaa.Sometimes(
        0.5,
        iaa.GaussianBlur(sigma=(0,0.5)),
    )] ,
    random_order = True)

image = cv2.imread(path)
cv2.imshow('orign', img)
cv2.waitKey(100)


images = np.array([image for _ in range(32)], dtype=np.uint8)
images_aug = augmentation.augment_images(images)


for i in range(32):
    iio.imwrite('C:\\Users\\kathr\\Desktop\\Aug\\' + str(i) + 'aug.jpg', images_aug[i], format= '.jpg')

【问题讨论】:

您能打印出您的images_aug[i] 吗?你得到什么值范围? 为什么你使用 OpenCV 来读取图像,而使用另一个库来编写它们? 【参考方案1】:

Opencv 以 B、G、R 顺序读取图像。在保存之前将它们转换为 R、G、B 将使用 imageio 解决您的问题。查看此post 了解更多信息。

for i in range(32):
    images_aug[i] = cv2.cvtColor(images_aug[i], cv2.COLOR_BGR2RGB)
    iio.imwrite('C:\\Users\\kathr\\Desktop\\Aug\\' + str(i) + 'aug.jpg', images_aug[i], format= '.jpg')

由于您已经在使用 opencv,您也可以直接使用 opencv 保存它们,避免转换。

for i in range(32):
    cv2.imwrite('C:\\Users\\kathr\\Desktop\\Aug\\' + str(i) + 'aug.jpg', images_aug[i])

【讨论】:

既然 OP 已经使用 OpenCV 来读取图像,那么使用它来编写它们不是更有意义吗?避免额外的转换? @DanMašek 好点,我会更新我的答案

以上是关于保存为灰色的增强图像(imgaug、imageio、opencv)的主要内容,如果未能解决你的问题,请参考以下文章

目标检测数据增强:YOLO官方数据增强实现/imgaug的简单使用

ubuntu为python处理图片安装图片数据增强库imgaug

数据增强 imgaug 框架使用

Tensorflow 对象检测 api:如何使用 imgaug 进行增强?

图像+预处理+数据增强+总结

VOC数据增强与调整大小