C#图像处理读取图像像素,根据像素数组绘制图像的方法

本文介绍了在C#中使用Bitmap的GetPixel/SetPixel方法和非托管内存的Marshal.Copy方法来读取和处理图像像素,特别强调了方法二在效率上的优势,并提供了相应的代码示例和两者在前端调用的应用场景。

前言

对图像进行处理与识别的前提,是先读取图像的像素。而每个像素有R、G、B三种颜色组成,然后对图片中大量的0~255之间的RGB灰度值进行深入分析和处理。
在C#中读取图像像素、根据像素数组绘制图像的方法有:

(1)Bitmap的GetPixel/SetPixel;
(2)非托管内存的方式Marshal.Copy;

1. Bitmap的GetPixel、SetPixel

		/// <summary>
		/// author:huangyq1984@qq.com
        /// 读取位图的RGB灰度值,按BGR的顺序存放到一维数组中
        /// </summary>
        /// <param name="bitmap"></param>
        /// <returns></returns>
        public static byte[] GetImageRgb_Pixel(Bitmap bitmap)
        {
   
   
            if (bitmap == null)
                return null;
            //数据长度是像素总数*3
            byte[] bytes = new byte[bitmap.Width * bitmap.Height * 3];
            int i = 0;
            for (int x = 0; x < bitmap.Width; x += 1)
            {
   
   
                for (int y = 0; y < bitmap.Height; y += 1)
                {
   
   
                	//获取指定像素的Color
                    Color c = bitmap.GetPixel(x, y);
                    //按BGR的顺序存放到数组中
                    bytes[i] = c.B; i += 1;
                    bytes[i] = c.G; i += 1;
                    bytes[i] = c.R; i += 1</
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hyq106

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值