Изменить цвет выбранной области интереса на изображении - PullRequest
0 голосов
/ 24 мая 2019

У меня есть изображение, показанное ниже,

enter image description here

Я выбираю три области интереса (ROI), помеченные красной рамкой, и хочу удалить все желтые цвета и заменить их белым цветом (цвет фона).

enter image description here

Мой код,

a=np.copy(img)
a[0:0, 50:50][:,:,:]=255
a[130:270, 210:350][:,:,:]=255
a[0:340, 210:390][:,:,:]=255
plt.imshow(a)

Однако результат неожиданный (ничего не меняется).

1 Ответ

1 голос
/ 25 мая 2019

Добравшись до консоли, я вижу проблему.

Чтобы смоделировать то, что вы, кажется, делаете, я использовал случайный массив с формой (400, 210, 3)

a = np.random.randint(256, size = (400,210,3))

Ваш выбор

a[0:0, 50:50]
Out[10]: array([], shape=(0, 0, 3), dtype=int64)

0: 0 и 50:50 оба возвращают выбор нулевого элемента, поэтому существует трехмерный массив с двумя осями нулевой длины.Установка 255 не затронула никаких элементов.

a[130:270, 210:350]
Out[13]: array([], shape=(140, 0, 3), dtype=int64)

В этом случае 210: 350 выходит за пределы диапазона оси 210. Numpy снова возвращает ось нулевой длины.Установка 255 не имеет никакого эффекта.

a[0:350, 210:390][:,:,:] 
Out[14]: array([], shape=(350, 0, 3), dtype=int64)

выбор оси 1 снова выходит за пределы диапазона, поэтому возвращается массив с осью нулевой длины.

Вы указываете прямоугольники в виде (вверху слева, внизу справа) координат.Требуется row_range, column_range.

Полагаю, вы хотите что-то вроде:

a[0:50, 0:50, : ] = 255
a[270:350, 130:210, : ] = 255
a[340:390, 0:210, : ] = 255

Выбор оси 0 - строки (ось y), а оси 1 - столбцы, (ось х).Ось 2 является компонентами цветов RGB.

HTH

...