一开始的想法是分离多光谱通道看能否做数据增强,所以自己写了个RGB图片通道分离,单通道做裁剪,合并通道的一个测试函数,实验可行,接下来将在多光谱图像上做测试。
import cv2
import numpy as np
def num_flip(data,mode): # 输入一个多维数组,包含多个通道
num = data.shape[-1] # 此处获得通道的个数,即列表里面数组的个数
list1 = [] ; list2 = []
list1.append(cv2.split(data)) # 通道分离,保存在list1中
for i in range(num): # 从列表中遍历
list2.append(cv2.flip(list1[0][i], mode)) # 翻转模式0.1.-1
img = cv2.merge(list2) # 合并和的多维数组
return num, img
# 调用如下
fp = r"C:\Users\h'p\Desktop\1.jpg"
img = cv2.imread(fp)
# 可以做随机裁剪等其他操作
img = cv2.resize(img, dsize=(125, 125), interpolation=cv2.INTER_NEAREST) # 也可以将裁剪操作写入上面函数
arr = num_flip(img,mode = np.random.choice(range(-1,2)) # 随机选取翻转模式
cv2.imshow('arr',arr)
cv2.waitKey(0)
结果如图(乱写的,大牛轻喷)