使用imgaug、opencv、imageio保存增强图像出现偏灰偏蓝问题求助
问题原因
- OpenCV 的
cv2.imread()接口默认返回 BGR 通道顺序 的图像数组,你用cv2.imshow()预览时,该接口同样默认适配 BGR 顺序,所以预览效果正常 - imgaug 做图像增强时仅处理像素值,不会修改通道顺序,增强后的输出数组仍为 BGR 顺序
imageio.imwrite()存储图像时默认按照 RGB 通道顺序 解析输入数组,直接传入 BGR 数组会导致红蓝通道翻转,最终输出图像偏蓝、色彩异常
修复方案
有两种常用修复方式,选其一即可:
方案1:保存前转换通道顺序
在调用imageio.imwrite前,将BGR数组转为RGB格式:
for i in range(32): # 把BGR转成RGB再用imageio保存 img_rgb = cv2.cvtColor(images_aug[i], cv2.COLOR_BGR2RGB) iio.imwrite(f'C:\\Users\\kathr\\Desktop\\Aug\\{i}aug.jpg', img_rgb, format= '.jpg')
方案2:直接用OpenCV接口保存图像
cv2.imwrite 默认适配 BGR 通道顺序,不需要额外转换通道,直接替换保存逻辑即可:
for i in range(32): cv2.imwrite(f'C:\\Users\\kathr\\Desktop\\Aug\\{i}aug.jpg', images_aug[i])
可选优化
你的代码中重复读取了两次同路径的图像,可以删除其中一次冗余读取,减少不必要的IO操作。
内容的提问来源于stack exchange,提问作者st0412
相关产品推荐
相关产品推荐

