Gdiplus对C ++配置二进制图像?

问题描述

是否可以设置GDIPlus图形方法或位图方法的颜色的设置仅表示二进制图像的黑白(0,0 / 255,255,255)颜色?我已经尝试过位图类的colorpalette选项(getPalette / setPalette),但是它根本不起作用。

我已经访问了图像本身,但是它也不起作用。请注意图片本身。

    for (int bufidx = 0; bufidx < m_BufferSize; bufidx++)
                    {
                        if (m_pImage[BINARY_VID][bufidx] > m_Threshold)
                        {
                            m_pImage[BINARY_VID][bufidx] = 255;
                        }
                        else
                        {
                            m_pImage[BINARY_VID][bufidx] = 0;
                        }
                    } // Algorithm for thresholding image

这是更改数据本身的代码。 m_buffersize是图片的大小(宽度*高度)

m_pImage [BINARY_VID]是具有0〜255个值的8位数据的数据本身。数据来自摄像头模块。

    m_pBitmap[vidType]->LockBits(&rc,PixelFormat8bppIndexed,&bitmapdata);
    memcpy(bitmapdata.Scan0,m_pImage[vidType],m_BufferSize);
    m_pBitmap[vidType]->UnlockBits(&bitmapdata);

这是我将其转换为位图方法的部分

int paletteSize = m_pBitmap[vidType]->GetPaletteSize();
ColorPalette* pPalette = new ColorPalette[paletteSize];
m_pBitmap[vidType]->GetPalette(pPalette,paletteSize);
// gets palette info of bitmap image to set color info of the bitmap
switch (vidType)
{
case NORMAL_VID:
case ROI_VID:
    for (unsigned int i = 0; i < pPalette->Count; i++)
    {
        pPalette->Entries[i] = Color::MakeARGB(255,i,i);
    }
    m_pBitmap[vidType]->SetPalette(pPalette);
    break;
    // Normal video || ROI video color set
case BINARY_VID:
    for (unsigned int i = 0; i < pPalette->Count; i++)
    {
        if (i > m_Threshold)
        {
            pPalette->Entries[i] = Color::MakeARGB(255,255);
        }
        else
        {
            pPalette->Entries[i] = Color::MakeARGB(255,0);
        }
    }
    m_pBitmap[vidType]->SetPalette(pPalette);
    break;

default:
    AfxMessageBox(TEXT("vidtype error : on converting palette!"));
    delete[] pPalette;
    return;
    break;
}
delete[] pPalette;
MemoryLeakCheck();

这是我用来转换颜色的部分。

这是我得到的结果图像。我只是不知道为什么我在仅包含0或255数据的二进制图像上出现灰度噪声。

Binary Image with gray noise

解决方法

此图像中没有灰色,这是错误的印象。

enter image description here

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...