我正在尝试对使用imread()读取的图像的背景进行规范化,该图像会生成NxMx3 ndarray。

为此,我需要从255中减去NxMx0轴,从250中减去NxMx1轴,并从225中减去NxMx2轴。

我怎样才能做到这一点?

最佳答案

您可以简单地从R,G和B值的数组中减去图像,然后numpyimplicitly broadcast them。这是可行的,因为image的最后一个维度与数组的维度匹配。

import numpy as np

# Some test data
image = np.random.randint(0, 255, (3,3,3))

#   array([[[218,  51, 105],
#           [227,  34,  20],
#           [ 68,  65,  41]],
#
#          [[ 43, 171, 110],
#           [166, 253, 191],
#           [ 86,  26,  28]],
#
#          [[167, 117, 167],
#           [ 96,  82,  21],
#           [ 45, 232, 127]]])

result = [255, 250, 225] - image

#   array([[[ 37, 199, 120],
#           [ 28, 216, 205],
#           [187, 185, 184]],
#
#          [[212,  79, 115],
#           [ 89,  -3,  34],
#           [169, 224, 197]],
#
#          [[ 88, 133,  58],
#           [159, 168, 204],
#           [210,  18,  98]]])

关于python - 如何从ndarray的一个轴上的每个元素中减去标量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41071221/

10-08 22:40