Перейти к содержимому
Compvision.ru
3StYleR

Изменение глубины цвета

Recommended Posts

Подскажите, пожалуйста, можно ли в OpenCV преобразовать изображение в 4/5/6-битное?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что за формат Вам нужен?

Встроенной такой функции нет, но можно ведь свою написать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что за формат Вам нужен?

Встроенной такой функции нет, но можно ведь свою написать.

хочу в jpeg оставить минимально возможное количество цветов без потери восприятия сюжета. Т.е., чтобы все оттенки зеленого, например, отображались одним цветом. И как я понял, глубина цвета тут, по ходу, не причем

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тогда можно сделать так:

1) разбить изображение на цветовые плоскости.

Mat img;

...

vector<Mat> channels;

cv::split(img,channels);

2) дальше поразрядное "И" каждого канала с маской, обнуляющей младшие биты (может быть больше подойдет простая бинаризация).

что то типа: bitwise_and

3) собрать все на место:

cv::merge(channels,img);

Цвет правда будет искажаться.

Можно просто постеризовать изображение:

можно, например так (кусок из gimp-овского кода):

      dest[RED_PIX]   = int (src[RED_PIX]   * levels) / levels;
dest[GREEN_PIX] = int (src[GREEN_PIX] * levels) / levels;
dest[BLUE_PIX] = int (src[BLUE_PIX] * levels) / levels;[/code]

levels - количество градаций каждой цветовой плоскости.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×