Индексирование в данные канала (массивы) с использованием привязок Python OpenCV - PullRequest
2 голосов
/ 28 октября 2011

Я пытаюсь выполнить сравнение каналов на двух пустых массивах, сгенерированных из привязок Python OpenCV (2.3.1).Итак, у меня есть маска (массив / изображение / канал) формы (x, y), которую я хочу сравнить с каждым каналом RGB-массива / изображения формы (x, y, 3).

Наполовину обернув голову вокруг нарезки кусочка, я могу приблизиться к тому, что хочу:

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

... но это возвращает ndarray формы (x, y, 1) вместоу) мне нужноЕсть ли элегантный способ сделать это за одну операцию нарезки.В противном случае, какой самый простой способ сделать это?

1 Ответ

3 голосов
/ 28 октября 2011

Не используйте слайс, а просто простой индекс:

channel = ndarr[..., i]

Это на самом деле ведет себя так же, как нарезка и индексация обычных списков Python.Использование фрагмента длины один приводит к подсписку, а использование простой индексации приводит к возвращаемому элементу:

>>> a = [0, 1, 2, 3, 4]
>>> a[2:3]
[2]
>>> a[2]
2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...