1产生随机颜色
思路:提取出彩色图片的3个通道,B,G,R分别进行一个随机颜色的添加,例如随机抽取(-50, 50)之内的数做为颜色变化量,每个像素加入上述随机量;
难点:程序处理超出255范围的像素。
涉及库函数:
random.randint(a,b) #高斯分布随机整数于(-50,50)
list_tar.astype("uint8"/img.dtype) #强制类型转换
cv2.merge((B,G,R)) #合并图片
B, G, R = cv2.split(img) #通道分解
def random_light_color(img):
B, G, R = cv2.split(img)
b_rand = random.randint(-50, 50) #获得随机颜色变换
if b_rand == 0:
pass
elif b_rand > 0:
lim = 255 - b_rand #设定一个最大的像素值上限,高于这个的默认为255最大值;
B[B > lim] = 255
B[B <= lim] = (b_rand + B[B <= lim]).astype(img.dtype) #小于最大上限的像素单元均加入随机元素
elif b_rand < 0:
lim = 0 - b_rand
B[B < lim] = 0
B[B >= lim] = (b_rand + B[B >= lim]).astype(img.dtype)
g_rand = random.randint(-50, 50)
if g_rand == 0:
pass
elif g_rand > 0:
lim = 255 - g_rand
G[G > lim] = 255
G[G <= lim] = (g_rand + G[G <= lim]).astype(img.dtype)
elif g_rand < 0:
lim = 0 - g_rand
G[G < lim] = 0
G[G >= lim] = (g_rand + G[G >= lim]).astype(img.dtype)
r_rand = random.randint(-50, 50)
if r_rand == 0:
pass
elif r_rand > 0:
lim = 255 - r_rand
R[R > lim] = 255
R[R <= lim] = (r_rand + R[R <= lim]).astype(img.dtype)
elif r_rand < 0:
lim = 0 - r_rand
R[R < lim] = 0
R[R >= lim] = (r_rand + R[R >= lim]).