使用python对单幅图像进行数据增并保存增强后的结果

cv2.error: OpenCV(4.5.4) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:182:
若出现上述所示问题:
1、检查路径是否有中文;
2、试试将数据路径改为完整路径;
3、换一张图像试试;

# 单一图像进行数据增强;
import numpy as np
from keras.preprocessing.image import ImageDataGenerator
import cv2
import matplotlib.pyplot as plt

# 读取图片
from keras.preprocessing.image import array_to_img
img=cv2.imread('D:/skq/DeepLearning/JSHA/NO15_copy/Add/Lena.PNG')
img= cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = np.expand_dims(img, 0)

# 设置生成器
# datagen = ImageDataGenerator(
#     rotation_range=90,
#     width_shift_range=0.2,
#     height_shift_range=0.2,
#     channel_shift_range=10,
#     shear_range = 20,
#     preprocessing_function=random_crop_image,
#     vertical_flip=True,
#     zoom_range=0.2,
#     horizontal_flip=True)


datagen = ImageDataGenerator(rescale=1./255,  # 像素点255,范围(0,1);
                                   rotation_range=20, # 随机旋转角度范围在(-20,20);
                                   width_shift_range=0.1,   # 水平位移(-0.1,0.1),提高数据鲁棒性,如大于1,表示像素值;
                                   height_shift_range=0.1,   # 上下位移(-0.1,0.1),如大于1,表示像素值;
                                   shear_range=0.1,  # 裁剪程度;
                                   zoom_range=0.1,  # 缩放程度;
                                   channel_shift_range=10,  # 通道随机偏移的最大幅度;
                                   horizontal_flip=True,    # 随机做水平翻转;
                                   fill_mode='nearest')     # 填充像素,离他最近的真实像素点进行填充;


datagen.fit(img)
# 生成并画图
times=9	# 生成图像数量;
i = 0
for batch in datagen.flow(img, batch_size=1, save_to_dir='D:/skq/DeepLearning/JSHA/NO15_copy/Add/Lena_Augmentation',save_prefix='Lena_new', save_format='jpg'):
    print(i)
    ax = plt.subplot(3,3,i+1)
    plt.sca(ax)
    plt.axis('off')
    ax.set_title('sample_%s'%(i),fontsize=7)
    
    # 先 plt.savefig;再 plt.imshow;否则会出现保存为空白的现象;
    plt.savefig('D:/skq/DeepLearning/JSHA/NO15_copy/Add/Lena_Augmentation/Lena.jpg')
    plt.imshow(array_to_img(np.squeeze(batch)))
    i += 1
    if i==times:

        plt.show()
        break

# plt.savefig('D:/skq/DeepLearning/JSHA/NO15_copy/Add/Lena_Augmentation/Lena.jpg')
print("finished!!!")

增强后的结果如下:
在这里插入图片描述


版权声明:本文为weixin_44119674原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。