2011-10-28 113 views
2

我想从OpenCV(2.3.1)Python绑定生成的两个numpy数组上进行通道比较。所以,我有一个形状(x,y)的掩模(阵列/图像/通道),我想与形状(x,y,3)的RGB阵列/图像的每个通道进行比较。使用OpenCV python绑定索引到通道数据(numpy数组)

已经中途包裹着我周围numpy的的切片头,我能得到接近我想要的:

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

...但是这将返回形状的ndarray(X,Y,1),而不是( x,y)我需要。在单一切片操作中是否有一种优雅的方式来实现这一点。否则,做这件事最简单的方法是什么?

回答

3

不要使用分片,而是一个简单的指标:

channel = ndarr[..., i] 

这实际上表现一样切片和索引正常Python列表。使用片段长度1导致子列表,并使用简单的索引结果返回元素:

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

非常感谢。显然,切片的一半并不能帮助我! – phmph