C# 将图像转换为红色灰度

C# 将图像转换为红色灰度,c#,C#,我有一个位图图像,我想转换为灰度,但使用红色而不是黑色作为灰色的基础 Bitmap formatted = bitmap.Clone(new Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.PixelFormat.Format16bppGrayScale); 如何实现这一点?在我看来,您希望应用过滤器并从图像中提取红色分量 基本上,你要做的是对给定像素的绿色和蓝色分量求反,只捕获红色分量 我发现了一小段代

我有一个位图图像,我想转换为灰度,但使用红色而不是黑色作为灰色的基础

Bitmap formatted = bitmap.Clone(new Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.PixelFormat.Format16bppGrayScale);

如何实现这一点?

在我看来,您希望应用过滤器并从图像中提取红色分量

基本上,你要做的是对给定像素的绿色和蓝色分量求反,只捕获红色分量

我发现了一小段代码,正好可以做到这一点。检查以下链接:


检查有关彩色滤光片的会话。您可以下载源代码,然后仔细研究一下。

这是一种蛮力方法,但它可以:

Bitmap formatted = bitmap.Clone(new Rectangle(0, 0, bitmap.Width, bitmap.Height), PixelFormat.Format24bppRgb);
int width = bitmap.Width;
int height = bitmap.Height;
for (int w = 0; w < width; w++)
{
    for (int h = 0; h < height; h++)
    {
        formatted.SetPixel(w, h, Color.FromArgb(bitmap.GetPixel(w, h).A, bitmap.GetPixel(w, h).R, 0, 0));
    }
}
Bitmap formatted=Bitmap.Clone(新矩形(0,0,Bitmap.Width,Bitmap.Height),PixelFormat.Format24bppRgb);
int width=位图宽度;
int-height=位图.height;
对于(int w=0;w
您对哪个部件有问题?将RGB向量转换为标量值,或获取标量值并将其映射到位图的“R”通道?第一部分可能是棘手的部分-我真正想做的是用相同的不透明度将每个像素转换成红色