numpy,求和矩阵给出了错误的结果

时间:2014-01-27 21:39:21

标签: python numpy matrix

为什么将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之后

1 个答案:

答案 0 :(得分:1)

尝试检查g_,b_和r _的类型。

如果他们有类型numpy.uint8,你应该收到警告,结果应该是253.

在第二种情况下,g_mat,b_mat和r_mat在分割时转换为numpy.int64