C# 如何更改EmguCV图像的调色板

C# 如何更改EmguCV图像的调色板,c#,bitmap,emgucv,C#,Bitmap,Emgucv,我打算更改EmguCV图像的调色板,但调色板没有更改 示例代码: var img = new Image<Gray, byte>(10, 10); ColorPalette pal = img.Bitmap.Palette; pal.Entries[0] = Color.FromArgb(255, 0, 0, 255); img.Bitmap.Palette = pal; //img.Bitmap.Palette.Entries[0] != pal.Entries[0]; var

我打算更改EmguCV图像的调色板,但调色板没有更改

示例代码:

var img = new Image<Gray, byte>(10, 10);
ColorPalette pal = img.Bitmap.Palette;
pal.Entries[0] = Color.FromArgb(255, 0, 0, 255);
img.Bitmap.Palette = pal;
//img.Bitmap.Palette.Entries[0] != pal.Entries[0];
var img=新图像(10,10);
ColorPalette pal=img.Bitmap.palete;
pal.Entries[0]=Color.FromArgb(255,0,0,255);
img.Bitmap.palete=pal;
//img.Bitmap.palete.Entries[0]!=pal.Entries[0];
对我来说,这似乎是无法改变的。此外,该属性只有一个getter,没有setter

但是如果你坚持认为可以改变调色板,我相信你。因此,这里有一个关于如何解决它的想法:

var img = new Image<Gray, byte>(10, 10);
Bitmap bmp = img.Bitmap;
ColorPalette pal = bmp.Palette;
pal.Entries[0] = Color.FromArgb(255, 0, 0, 255);
bmp.Palette = pal;
Image<Gray, byte> changedImage = new Image<Gray, byte>(bmp);
var img=新图像(10,10);
位图bmp=img.Bitmap;
调色板pal=bmp.palete;
pal.Entries[0]=Color.FromArgb(255,0,0,255);
bmp.palete=pal;
图像更改图像=新图像(bmp);

这个想法是,您可以从更改调色板的位图中创建一个新图像(或者用
img=new image(bmp);
)替换旧图像)。我自己没试过,但我觉得值得一试

你的意思是不能编辑位图调色板?是的,你可以,我一直都这样做。复制调色板,编辑并在位图上设置它。但是它在EmguCV图像上不起作用。好吧,然后我错误地解释了文档。现在我用一个新的想法更新了答案,如何解决它。它不起作用。但是“位图bmp”将保留更改的调色板。它表明EmguCV返回一个新的位图对象,该对象指向相同的像素数据,但不共享相同的调色板。奇数。您确定要使用
灰色
而不是
Bgra
作为颜色类型吗?