一、前言
最近项目处理图片比较多,有时忘记改默认值,使得API将灰度图读成了三通道图,事后虽然改了过来,但很好奇二者后期转化的结果与原始读入的区别。本着动手多折腾的想法,抽个时间好好试验了一下,结果如下。
二、试验
1.opencv 模块
凡事先上代码,再谈结果,代码如下:
src_1 = cv2.imread(r"F:\demo\MS_DMS\add\0_\2.jpg", 0) # 正确读入单通道的方式
src_3 = cv2.imread(r"F:\demo\MS_DMS\add\0_\2.jpg") # 以三通道的方式读入
print(src_1)
gray = cv2.cvtColor(src_3, cv2.COLOR_BGR2GRAY) # 再将后者由三通道转换为单通道
list_ = ((gray == src_1).astype("int8")).tolist() # 转为列表,方便计算比对结果中 0(False) 的个数
print(list_.count(0))
结果为
src_1 =
[[148 149 150 ... 154 154 154]
[148 149 150 ... 154 154 154]
[148 150 151 ... 154 154 154]
...
[154 146 132 ... 213 195 154]
[144 135 130 ... 172 207 169]
[134 123 118 ... 210 180 199]]
list_.count(0) = 0 # 说明两个数组相等
由上可以看出,原始读入灰度图 与 先按三通道图读入,后面再转换为单通道图的方式相比,二者结果是相等的。再看看,单通道变为三通道是怎么变化的。
src_1 = [[148 149 150 ... 154 154 154]
[148 149 150 ... 154 154 154]
[148 150 151 ... 154 154 154]
...
[154 146 132 ... 213 195 154]
[144 135 130 ... 172 207 169]
[134 123 118 ... 210 180 199]]
src_3 = [[[148 148 148]
[