使用OpenCV Python绑定索引通道数据(numpy数组)
我正在尝试对两个由OpenCV(2.3.1)Python绑定生成的numpy数组进行通道比较。具体来说,我有一个形状为(x, y)的掩码(数组/图像/通道),我想把它和一个形状为(x, y, 3)的RGB数组/图像的每个通道进行比较。
我对numpy的切片操作有了一些了解,能更接近我想要的结果:
channel = ndarr[...,i:i+1] #where i is the channel I want
... 但是这样得到的结果是形状为(x, y, 1)的数组,而我需要的是形状为(x, y)的数组。有没有一种优雅的方法可以在一次切片操作中做到这一点?如果没有,最简单的方法是什么呢?
1 个回答
4
不要使用切片,而是用简单的索引:
channel = ndarr[..., i]
这实际上和切片以及正常的Python列表索引效果是一样的。使用长度为1的切片会得到一个子列表,而使用简单的索引则会直接返回那个元素:
>>> a = [0, 1, 2, 3, 4]
>>> a[2:3]
[2]
>>> a[2]
2