我正在尝试对使用imread()
读取的图像的背景进行规范化,该图像会生成NxMx3 ndarray。
为此,我需要从255中减去NxMx0轴,从250中减去NxMx1轴,并从225中减去NxMx2轴。
我怎样才能做到这一点?
最佳答案
您可以简单地从R,G和B值的数组中减去图像,然后numpy
将implicitly 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/