问题描述:在C#中使用Bitmap创建灰度图像时,创建出的图像为伪彩色图像,主要是因为pattle的问题,解决方案如下代码所示:
Bitmap^ LBP::ConvertIplImageToBmp(IplImage* img)
{
if (img == nullptr)
return nullptr;
if (img->nChannels != 1) // 只处理单通道图像
return nullptr;
IntPtr ptr = IntPtr(img->imageData);
//_lbpBmp = gcnew Bitmap(img->width, img->height, PixelFormat::Format8bppIndexed, ptr);
_lbpBmp = gcnew Bitmap(img->width, img->height, img->widthStep, PixelFormat::Format8bppIndexed, ptr);
ColorPalette^ palette = _lbpBmp->Palette;
for (int i = 0; i < 256; ++i)
{
palette->Entries[i] = Color::FromArgb(255, i, i, i);
}
_lbpBmp->Palette = palette;
_lbpBmp->Save("lbp.bmp", ImageFormat::Bmp);
return _lbpBmp;
}