为什么将r g b个通道矩阵一起求和并不能得到765的最大结果,当每个矩阵的最大值为255且这些值在同一位置时?但如果所有矩阵除以255,则最大值为3。
import numpy as np
from PIL import Image
pic= Image.open(picture_dir)
r,g,b = pic.split()
g_ = np.asarray(g)
b_ = np.asarray(b)
r_ = np.asarray(r)
print((r_+g_+b_).max()) # gives result of 255, supposed to be 765
g_mat = np.asarray(g)/255
b_mat = np.asarray(b)/255
r_mat = np.asarray(r)/255
print((g_mat+b_mat+r_mat).max()) # gives result of 3.0
细分(比如这里:np.asarray(g)/ 255)是否实际上改变了除了值以外的任何东西?
编辑:除以之前的dtype是uint8并且在划分float64之后
答案 0 :(得分:1)
尝试检查g_,b_和r _的类型。
如果他们有类型numpy.uint8,你应该收到警告,结果应该是253.
在第二种情况下,g_mat,b_mat和r_mat在分割时转换为numpy.int64