已经被cv2的颜色通道问题坑了两次了,最后老老实实用各工具读、写、显示才摸清楚。
1. cv2(opencv python接口)是BRG格式的。
假设有一张只有(2,1)尺寸的图片,数组形式
[[[20, 21, 22]]
[[23,24,25]]]
(1). 原图经过cv2.imread()后,1、3通道调换(RGB->BRG),图像的数组变成
[[[22, 21, 20]
[25,24,23]]]
(2). 原图经过一次cv2.cvtColor 函数cv2.COLOR_BGR2RGB转换, 也是1、3通道调换,图像数组变为
[[[22, 21, 20]
[25,24,23]]]
(3).原图经过一次cv2.imwrite()后,1、3通道调换(RGB->BRG),图像的数组变成
[[[22, 21, 20]
[25,24,23]]]
也就是说,如果原图如果经过一次imread()->cv2.cvtColor(cv2.COLOR_BGR2RGB)->cv2.imwrite(), 实际上图像要做3次1、3通道调换。
2. skimage
skimage io模块无论是imread还是imsave均是RGB模式,不会调换通道
3. openslide
openslide从slide中取出的图像为RGB模式,均不调换通道
4. kereas 的图像预处理模块ImageDataGenerator
RGB模式,均不调换通道