Обратите внимание, что я прочитал ответы на вопросы одной и той же проблемы, но никто не похож на мой.ValueError: значение истинности массива с несколькими элементами неоднозначно. Используйте a.any() или a.all()
Я загрузил изображение в OpenCV и отобразил его. Все отлично.
Теперь я хочу, чтобы установить черные пиксели на синий, так что я запускаю это:
for i in range(image.shape[0]):
for j in range(image.shape[1]):
if image[i,j,0]==0 and image[i,j,1]==0 and image[i,j,2]==0:
image[i,j,0]=255
Я получил эту ошибку:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Nota Bene:
Обозначения
image[i,j,0]
,image[i,j,1]
иimage[i,j,2]
подчеркнуть значение канала пикселя (BGR = Blue Green Red), поэтому это не массив, как это сообщение об ошибке. Настолько странно, если Python не понимает самого себя.Когда я бегу
print image[i,j,x]
сx
= 0,1,2 я получаю нормальное поведение для случайных величинi
иj
. То есть, я правильно получаю значения этих трех каналов.
Попробуйте заменить проверку состояния следующим образом: 'if (image [i, j, 0] == 0) & (image [i, j, 0] == 0) & (image [i, j, 0] == 0): 'Я думаю, что проблема заключается в том, что при сравнении массивов вам нужно использовать побитовые операторы, а также использовать скобки из-за оператора. Endecnce – EdChum
Чтобы дать некоторый контекст в ответе Edchum: http://stackoverflow.com/questions/10062954/valueerror-the-truth-value-of-a-array-with-more-than-one-element-is-ambiguous –
@EdChum Я сделал то, что вы сказали, но поверьте мне, это говорит мне точно так же сообщение об ошибке –