Как я могу преобразовать RGB-изображение в одноканальное серое изображение и сохранить его с помощью Python? - PullRequest
0 голосов
/ 11 января 2019

Вопрос прост. У меня есть много 3-канальных изображений RGB. (Их цвета уже серые, но вы знаете, формат RGB.) Я хочу преобразовать их в полутоновое изображение с 1 каналом.

Я пытался сделать это с помощью opencv. Но после того, как я сохранил его в формате png, он испортился. Я думаю, что структура файла PNG является причиной ...

В любом случае, есть ли хороший способ сделать это? Рекомендации для 1-канального формата изображения также будут по достоинству оценены.

1 Ответ

0 голосов
/ 11 января 2019

Если у вас есть несколько десятков изображений, быстрый способ конвертировать их все в одноканальные изображения в оттенках серого, которые OpenCV может прочитать, - это ImageMagick в Терминале - он включен в большинство дистрибутивов Linux и доступно для macOS и Windows. Итак, чтобы сделать одноканальную 8-битную PGM версию всех PNG в текущем каталоге:

magick mogrify -format PGM -colorspace gray -depth 8 *.png

Если у вас много сотен или тысяч изображений, используйте GNU Parallel , чтобы все ядра вашего процессора работали параллельно:

parallel -X magick mogrify -format PGM -colorspace gray -depth 8 ::: *.png

ОДНАКО , я бы не советовал вам это делать, потому что есть много других вещей, о которых вам нужно подумать:

  • если ваши изображения содержат важные метаданные, вам нужно выбрать формат, в котором они сохраняются, а не PGM

  • если ваши изображения содержат данные пикселей с плавающей запятой, возможно, вам следует использовать формат TIFF

  • если ваша цель - сэкономить дисковое пространство (что кажется глупым в наше время почти свободного хранения), вы должны рассмотреть формат сжатия

  • если ваша цель - сэкономить ОЗУ, вам вообще может не потребоваться делать это, так как вы можете просто преобразовать свои изображения в одноканальные при загрузке, например, OpenCV imread(...cv2.IMREAD_GRAYSCALE)

Итак, вам нужно быть более ясным в отношении ваших данных и ваших целей. Также обратите внимание, что многие люди утверждают, что хотят сэкономить «память» , и они могут означать диск или ОЗУ.

Помните также, что PNG может сохранять 8- или 16-битные изображения, цветные или в оттенках серого, с палитрой или без нее (в зависимости от количества цветов), с которыми последующие приложения могут или не могут справиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...