【问题标题】:How to change the ColorPalette of an EmguCV image如何更改 Emgu CV 图像的调色板
【发布时间】:2013-12-05 16:20:24
【问题描述】:

我想更改 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];

【问题讨论】:

    标签: c# bitmap emgucv


    【解决方案1】:

    对我来说,ColorPalette 似乎无法更改。此外,Entries 属性只有一个 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);
    

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

    【讨论】:

    • 您的意思是您不能编辑位图调色板?是的,你可以,我一直都这样做。复制调色板,编辑并将其设置在位图上。但它不适用于 EmguCV 图像。
    • 好吧,那我把文档解释错了。
    • 现在我已经用一个关于如何解决它的新想法更新了答案。
    • 它不起作用。但“位图 bmp”将保留更改后的调色板。 EmguCV 会返回一个新的 Bitmap 对象,该对象指向相同的像素数据,但不共享相同的调色板。奇数。
    • 您确定要使用Gray 而不是Bgra 作为颜色类型吗?
    猜你喜欢
    • 2021-04-22
    • 2012-04-02
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 2011-07-03
    • 1970-01-01
    相关资源
    最近更新 更多