C++ 将灰度转换为Rgb

C++ 将灰度转换为Rgb,c++,bitmap,rgb,grayscale,C++,Bitmap,Rgb,Grayscale,-问题底部有代码摘录 我对函数policz和koloruj有问题。我需要将灰度位图转换为rgb 有一个表格显示位图应如何从n(灰度)转换为rgb(颜色)。运行下面的代码段显示位图应如何转换: nrnbn00001-85rn-1+300862550087-170255gn-1+301712552550172-255255BN-1+3首先,您的程序正在泄漏内存。尽量避免使用new。使用智能指针代替。这是您的main() std::unique_ptr<uint8_t[]> pixmap

-问题底部有代码摘录

我对函数
policz
koloruj
有问题。我需要将灰度位图转换为rgb

有一个表格显示位图应如何从
n(灰度)
转换为
rgb(颜色)
。运行下面的代码段显示位图应如何转换:
nrnbn00001-85rn-1+300862550087-170255gn-1+301712552550172-255255BN-1+3
首先,您的程序正在泄漏内存。尽量避免使用
new
。使用智能指针代替。这是您的
main()

std::unique_ptr<uint8_t[]> pixmap =
    std::make_unique<uint8_t[]>(PictureInfo.biSizeImage / 3);

std::unique_ptr<kolor[]> kolormap =
    std::make_unique<kolor[]>(PictureInfo.biSizeImage / 3);

odczytaj_obraz(obraz, pixmap.get(), PictureInfo);
koloruj(pixmap.get(), kolormap.get(), PictureInfo);

当涉及到实际转换时,如果我正确阅读表格,可以简化为:


nrngnbn 0-85n*300 86-171255(n-86)*30 172-255255(n-171)*3
因此您的图片只包含灰度信息。您想添加颜色信息。这些额外的信息从何而来?您确定目标没有从颜色转换为灰色吗?这是可能的。另外,请在这里提供所有需要的信息,而不是外部链接。请直接在这里提供所有有用的信息,而不是通过链接。在此处直接以文本形式提供文本信息,而不是通过链接到图片。请通过添加问题来添加信息,而不是将其隐藏在注释中。如果您有代码,请在此处显示,并解释缺少的内容或行为不端。理想情况下,将所有内容翻译成英语,这将提高您的机会。
using WORD = uint16_t;
using DWORD = uint32_t;
using LONG = int32_t;

struct BITMAPFILEHEADER {
    WORD bfType;
    DWORD bfSize;
    WORD bfReserved1;
    WORD bfReserved2;
    DWORD bfOffBits;
};

struct BITMAPINFOHEADER {
    DWORD biSize;
    LONG biWidth;
    LONG biHeight;
    WORD biPlanes;
    WORD biBitCount;
    DWORD biCompression;
    DWORD biSizeImage;
    LONG biXPelsPerMeter;
    LONG biYPelsPerMeter;
    DWORD biClrUsed;
    DWORD biClrImportant;
};