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

Попробуйте Portable Python .

1
задан Georgy 16 January 2019 в 13:25
поделиться

2 ответа

Как насчет изменения

black_pixels_mask = np.all(image == [0, 0, 0], axis=-1); 

на

black_pixels_mask = np.all(image == [0, 0, 0], axis=2)
0
ответ дан Georgy 16 January 2019 в 13:25
поделиться

Проблема в том, что в версиях matplotlib < 2.2.0 не было нормализации и каких-либо предупреждений, когда вы передавали массив в imshow, который содержал данные вне ожидаемого диапазона. Итак, вы можете получить некоторые неожиданные результаты, например, здесь: Поведение Bizzare matplotlib при отображении изображений, отлитых как плавающие

Если вы обновите свой matplotlib до версии> = 2.2.0, при запуске кода в этом вопросе вы увидите следующее предупреждение:

Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).

и полученное изображение будет тем, которое вы хотели бы получить. Итак, мой совет для вас - заменить

image_copy[black_pixels_mask] = [255, 255, 255]

на

image_copy[black_pixels_mask] = [1, 1, 1]

, и было бы также желательно обновить matplotlib.

Вот связанная проблема на GitHub: imshow не нормализует диапазон цветов в изображениях RGB , а также запрос на извлечение: Обрезать данные RGB до допустимого диапазона для imshow [119 ].

0
ответ дан Georgy 16 January 2019 в 13:25
поделиться
Другие вопросы по тегам:

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