Загрузка и сохранение растровых изображений в OpenCV (версия OpenCV = 3.1.0) - PullRequest
0 голосов
/ 26 апреля 2020

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

Я пытался загрузить и записать Растровое изображение изображения с OpenCV in C ++ и получил в нем помощь, моя проблема в том, как изображение загружается и пишется.

Вот в чем дело: я работаю над 256-цветовой палитрой (8bpp) , пытаюсь что-то отредактировать или добавить, а потом я пишу это, или вы можете сказать, что я его сохраняю. Проблема в том, что цветовая палитра до и после загрузки изображения не совпадает . Похоже, что OpenCV не только загружает изображение, но и меняет цвет палитры, в моем случае он меняется на RGB color (24bpp) , что приводит к выходному изображению с размером 3 x размер исходного изображения после сохранения загруженного изображения.

Мой вопрос существует ли способ загрузить его или написать без изменения цветовой палитры изображения? , если это невозможно, есть ли способ написать его с указанием c цветовой палитры? , чтобы я мог указать его 256-цветовой палитры (8bpp) , если это невозможно, либо любой из возможных Конвертер будет хорошим (от RGB-цвета (24bpp) до 256-цветовой палитры (8bpp)) .

Вот мой код для загрузки и записи растрового изображения:

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;

int main()
{
    Mat BitImage = imread("BitImage_Intput.bmp", -1); // -1 To load image as it is (without changing) but not working.
    imwrite("BitImage_Output.bmp", BitImage); // To write or save the image.
    waitKey(0);
    return 0;
} 

Я нашел эту функцию, imread("BitImage_Intput.bmp", CV_8UC1);, она выполняет работу в одной стороне, но разрушает ее на другой стороне, цветовая палитра не изменилась, но я получил изображение СЕРЫЙ (Все цвета, кроме белый и черный удалены или (),

Растровое изображение с 256-цветовой палитрой (8 бит / с)

Цвет RGB ( 24bpp) Растровое изображение

СЕРНОЕ (8bpp) растровое изображение

...