Удалить пиксель со значением 0 255 в массиве np

Я использую Opencv и python 3.6 У меня есть изображение с такими размерами:

depth = depth[0:240, 96:320]

Итак, изображение (240 224). Изображение в оттенках серого, и я не хочу рассматривать два крайних значения 0/255 интенсивности пикселей.

У меня уже есть петля в моем скрипте. Я думаю, что мне нужно добавить строку, где я снимаю эти пиксели вот так:

for b in depth: #cicle already existing
    if b < 255 and b > 0:  #added line
        a = a+1
        if a <= 121 and a >= 118:
            for f in range(25, 223):
                #print((x+b)%33)
                soundArr[int((f-25)/6)] = soundArr[int((f-25)/6)]+b[f]

но я получаю сообщение об ошибке:

The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Итак, как мне удалить эти пиксели?

Каждый b в for b in depth: представляет собой массив, соответствующий каждой из строк ni depth. b < 255 и b > 0 создают логические массивы, указывающие, удовлетворяет ли каждый элемент условию. Когда вы выполняете b < 255 and b > 0, вы пытаетесь создать одно логическое значение из двух логических массивов, что на самом деле не имеет смысла. Вы можете использовать b < 255 & b > 0 для создания третьего логического массива, указывающего, какие элементы удовлетворяют условиям оба, но по-прежнему не имеет смысла использовать его в качестве условия блока if. Что вы хотите делать с крайними значениями?

jdehesa 04.06.2018 12:17

я хочу удалить белый и черный пиксели. Поэтому, если пиксель равен 0 или 255, не считайте его

gaetano ma 04.06.2018 12:24

Но что именно вы подразумеваете под «удалением»? Если ваше изображение имеет форму (240, 224), вы не можете просто «удалить» пиксели, форма должна оставаться такой же. Если вы не хотите рассматривать их для какого-либо алгоритма, вы можете замаскировать их или что-то в этом роде.

jdehesa 04.06.2018 12:28

хорошо, извините, я отредактировал свой вопрос, чтобы быть более ясным. Под удалением я подразумеваю не рассматривать 0 и 255 как значения в следующем алгоритме (см. Код вверху)

gaetano ma 04.06.2018 12:32

Похоже, вам просто нужно изменить цикл, чтобы перебирать каждый пиксель, как указывает @jdehesa. Как есть, вы перебираете каждый строка.

busybear 04.06.2018 12:45

если я установил «if b <255 & b> 0:», я получил эту ошибку: ufunc 'bitwise_and' не поддерживается для входных типов, и входные данные не могут быть безопасно приведены к каким-либо поддерживаемым типам в соответствии с правилом литья '' безопасно ''

gaetano ma 04.06.2018 12:57
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
6
395
1

Ответы 1

Если я правильно понимаю вопрос, вы можете использовать numpy.where, чтобы найти индексы 0 и 255 в вашем изображении глубины. Затем, когда вы перебираете изображение, вы можете игнорировать результаты из numpy.where.

Другие вопросы по теме

Похожие вопросы