Как я могу уменьшить бит на пиксель изображения с OpenCV - PullRequest
0 голосов
/ 22 февраля 2019

Мне нужно изображение с 8 битами в секунду (бит на пиксель) для изучения сегментации изображения с использованием тензорного потока.

Ниже приведен мой краткий код.

Mat Image;
Image = imread("Input.png",IMREAD_UNCHANGED);

** image synthesis process **

imwrite("C:\\Output.png", Image);

Если вам интересномой полный исходный код, вы можете посмотреть на то, что я спрашивал ранее.

Если я проверяю bpp выходного изображения в этом состоянии, он равен 24.

Что мне делать?

К вашему сведению, я пытался внести исправления, такие как CV_8UC1, но, похоже, он работает не очень хорошо.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Вместо чтения изображения в формате по умолчанию читайте изображение в формате градаций серого.

Mat Image;
Image = imread("Input.png",IMREAD_GRAYSCALE);

** image synthesis process **

imwrite("C:\\Output.png", Image);

Вы можете проверить эту ссылку для получения подробной информации о форматах изображений OpenCV: https://docs.opencv.org/3.0-beta/modules/imgcodecs/doc/reading_and_writing_images.html

0 голосов
/ 22 февраля 2019

Вы, вероятно, читаете на цветном изображении, которое имеет три байта для красного, зеленого и синего цветовых компонентов каждого пикселя.

Если вам просто нужно 8-битное изображение, вы можете использоватькомпонент одного цвета.

Если вам нужно разумно обработать входное изображение, преобразуйте его в оттенки серого сначала:

cvtColor(src, bwsrc, cv::COLOR_RGB2GRAY);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...