opencv / numpy如何获取每个像素的总和
opencv / numpy how to get the sum of each pixel
我有一个图像二维数组,每个像素都包含 rgb 值(我猜是 opencv 中的 bgr),我正在尝试获取一个新的二维数组,它具有每个像素的总和。
例如
起始图片:
形状:(1080,1920,3)
[[[255,255,255], [0,0,0]],
[[0,120,255], [0,255,0]]]
结果:
形状:(1080,1920,1)
[[[765],[0]],
[[375],[255]]]
我确定有一个我还不知道的简单 Numpy 解决方案...
如有任何帮助,我们将不胜感激!
mono = rgb.sum(axis=2)
生成一个形状 (1080,1920)。如果你真的需要它有三维空间,你可以使用reshape
.
顺便说一下,如果你真的想制作单色,这不是做这件事的方法。有一个将 RGB 转换为单声道的公式,OpenCV 有工具可以做到这一点。
你确定这是一个二维数组吗?通常图像数组是 3-d,具有形状(高度,宽度,n_channels)。如果你有这样的数组,你可以在数组上使用 sum
方法,在通道轴上求和。
例如
In [1]: a = np.random.randint(0, 10, (2, 3, 4))
In [2]: a
Out[2]:
array([[[5, 1, 7, 0],
[7, 3, 1, 5],
[5, 7, 0, 2]],
[[5, 2, 0, 9],
[4, 7, 4, 4],
[0, 7, 1, 3]]])
In [3]: a.sum(axis=-1)
Out[3]:
array([[13, 16, 14],
[16, 19, 11]])
我有一个图像二维数组,每个像素都包含 rgb 值(我猜是 opencv 中的 bgr),我正在尝试获取一个新的二维数组,它具有每个像素的总和。
例如
起始图片:
形状:(1080,1920,3)
[[[255,255,255], [0,0,0]], [[0,120,255], [0,255,0]]]
结果:
形状:(1080,1920,1)
[[[765],[0]], [[375],[255]]]
我确定有一个我还不知道的简单 Numpy 解决方案...
如有任何帮助,我们将不胜感激!
mono = rgb.sum(axis=2)
生成一个形状 (1080,1920)。如果你真的需要它有三维空间,你可以使用reshape
.
顺便说一下,如果你真的想制作单色,这不是做这件事的方法。有一个将 RGB 转换为单声道的公式,OpenCV 有工具可以做到这一点。
你确定这是一个二维数组吗?通常图像数组是 3-d,具有形状(高度,宽度,n_channels)。如果你有这样的数组,你可以在数组上使用 sum
方法,在通道轴上求和。
例如
In [1]: a = np.random.randint(0, 10, (2, 3, 4))
In [2]: a
Out[2]:
array([[[5, 1, 7, 0],
[7, 3, 1, 5],
[5, 7, 0, 2]],
[[5, 2, 0, 9],
[4, 7, 4, 4],
[0, 7, 1, 3]]])
In [3]: a.sum(axis=-1)
Out[3]:
array([[13, 16, 14],
[16, 19, 11]])