使用OpenCV python绑定索引到通道数据(numpy数组)

时间:2011-10-28 14:35:32

标签: python opencv numpy

我正在尝试对从OpenCV(2.3.1)Python绑定生成的两个numpy数组进行通道比较。所以,我有一个形状(x,y)的掩码(数组/图像/通道),我想与RGB数组/形状(x,y,3)的每个通道进行比较。

中途绕着numpy的切片,我可以接近我想要的东西:

channel = ndarr[...,i:i+1]     #where i is the channel I want

...但是这会返回一个形状(x,y,1)的ndarray而不是我需要的(x,y)。在单个切片操作中是否有一种优雅的方法可以做到这一点。如果不这样做,最简单的方法是什么?

1 个答案:

答案 0 :(得分:3)

不要使用切片,而应使用简单的索引:

channel = ndarr[..., i]

这实际上与切片和索引普通Python列表的行为相同。使用长度为1的切片会生成子列表,并使用简单的索引结果返回要返回的元素:

>>> a = [0, 1, 2, 3, 4]
>>> a[2:3]
[2]
>>> a[2]
2