2011-10-28 49 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