图片的hsv色域增强模块
2、调用位置在datasets.py的LoadImagesAndLabels类的__getitem__函数(590行)调用
传入参数是hyp文件中的hsv三通道的系数
augment_hsv(img, hgain=hyp['hsv_h'], sgain=hyp['hsv_s'], vgain=hyp['hsv_v'])3、代码注释 3.1 传入参数
def augment_hsv(im, hgain=0.5, sgain=0.5, vgain=0.5):
"""
参数:
img: 待处理图片 BGR
hgain: h通道色域参数 用于生成新的h通道,默认为0.5
sgain: h通道色域参数 用于生成新的s通道,默认为0.5
vgain: h通道色域参数 用于生成新的v通道,默认为0.5
"""
3.2 HSV颜色空间增强
if hgain or sgain or vgain:
# 随机取-1到1三个实数,乘以hyp中的hsv三通道的系数 用于生成新的hsv通道
r = np.random.uniform(-1, 1, 3) * [hgain, sgain, vgain] + 1
# 图像的通道拆分 h s v
hue, sat, val = cv2.split(cv2.cvtColor(im, cv2.COLOR_BGR2HSV))
dtype = im.dtype # uint8
x = np.arange(0, 256, dtype=r.dtype)
lut_hue = ((x * r[0]) % 180).astype(dtype) # 生成新的h通道
lut_sat = np.clip(x * r[1], 0, 255).astype(dtype) # 生成新的s通道
lut_val = np.clip(x * r[2], 0, 255).astype(dtype) # 生成新的v通道
# 图像通道合并 img_hsv=h+s+v 随机调整hsv之后重新组合hsv通道
# cv2.LUT(hue, lut_hue) 通道色域变换 输入变换前通道hue 和变换后通道lut_hue
im_hsv = cv2.merge((cv2.LUT(hue, lut_hue), cv2.LUT(sat, lut_sat), cv2.LUT(val, lut_val)))
# no return needed dst:输出图像
cv2.cvtColor(im_hsv, cv2.COLOR_HSV2BGR, dst=im)



