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

2 投票
1 回答
1652 浏览
提问于 2025-04-17 05:11

我正在尝试对两个由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

撰写回答