问题:
img_yuv[:, :, 0] = np.where(img_yuv[:, :, 0] + add_num > 255, img_yuv[:, :, 0], img_yuv[:, :, 0] + add_num)
这样img_yuv[:, :, 0] + add_num的值可能会溢出255而变为0,1等值,因为cv2读image返回类型为uint8的ndarray
正确做法
正确的做法为,先将ndarray类型转换为uint16或其他,再进行处理,最后再转回uint8
img_yuv = img_yuv.astype(np.uint16)
img_yuv[:, :, 0] = np.where(img_yuv[:, :, 0] + add_num > 255, img_yuv[:, :, 0], img_yuv[:, :, 0] + add_num)
img_yuv = img_yuv.astype(np.uint8)