Csharp/C#教程:C#将2D双数组转换为灰度图像分享


C#将2D双数组转换为灰度图像

第一次在这里使用C#。 我正在阅读一些图像文件,做一些计算,输出和数组的double。 我需要能够将这个双数组(或者这些,因为我将有多个数组)保存到灰度图像。 我一直在互联网上四处寻找,我找不到多少。 我已经在Python和Mathlab上完成了它,但C#似乎对我不友好。 这是我到目前为止所做的(对于双重图像创建)。

static Image MakeImage(double[,] data) { Image img = new Bitmap(data.GetUpperBound(1), data.GetUpperBound(0)); //Bitmap bitmap = new Bitmap(data.GetUpperBound(1), data.GetUpperBound(0)); for (int i = 0; i < data.GetUpperBound(1); i++) { for (int k = 0; k < data.GetUpperBound(0); k++) { //bitmap.SetPixel(k, i, Color.FromArgb((int)data[i, k],(int) data[i, k],(int) data[i, k])); } } return img; } } 

}

这段代码实际上并没有做太多。 它创建我的空白图像模板。 颜色不需要双倍输入。 我不知道如何从数据创建图像…我卡住了=)

先感谢您。

如果您可以接受使用不安全的块,这非常快:

上述就是C#学习教程:C#将2D双数组转换为灰度图像分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

  private Image CreateImage(double[,] data) { double min = data.Min(); double max = data.Max(); double range = max - min; byte v; Bitmap bm = new Bitmap(data.GetLength(0), data.GetLength(1)); BitmapData bd = bm.LockBits(new Rectangle(0, 0, bm.Width, bm.Height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb); // This is much faster than calling Bitmap.SetPixel() for each pixel. unsafe { byte* ptr = (byte*)bd.Scan0; for (int j = 0; j < bd.Height; j++) { for (int i = 0; i < bd.Width; i++) { v = (byte)(255 * (data[i, bd.Height - 1 - j] - min) / range); ptr[0] = v; ptr[1] = v; ptr[2] = v; ptr[3] = (byte)255; ptr += 4; } ptr += (bd.Stride - (bd.Width * 4)); } } bm.UnlockBits(bd); return bm; } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1018275.html

(0)
上一篇 2022年1月3日
下一篇 2022年1月3日

精彩推荐