.NET开发Bitmap GetPixel,SetPixel处理太慢的替代解决办法

编程开发
560
C#
Bitmap.LockBits替代
GetPixel
替代解决办法

Bitmap处理图像 GetPixel + SetPixel大图像处理太慢的解决办法

最近做的一些事情和图像识别有关,图像处理这块就必不可免,有时甚至需要对图像每个像素进行处理,对于小图片,使用 Bitmap的方法 GetPixel + SetPixel 还能凑合用,但对于大图像处理来说这个处理效率是真的惨不忍睹。 替代方法如下

string imgPath = @"C:\Users\Administrator\Desktop\123.jpg";
System.Drawing.Bitmap BasicImageBox = new System.Drawing.Bitmap(imgPath);
Rectangle rect = new Rectangle(0, 0, BasicImageBox.Width, BasicImageBox.Height);//创建容器矩阵
System.Drawing.Imaging.BitmapData bmpData =
BasicImageBox.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite,BasicImageBox.PixelFormat);//实例化一个BitmapData
           //获取首行地址
            IntPtr ptr = bmpData.Scan0;
            //定义数组保存位图
            int bytes = Math.Abs(bmpData.Stride) * BasicImageBox.Height;
            byte[] rgbValues = new byte[bytes];
            //复制RGB值到数组
            System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes);
            byte rgb;
            //for (int counter = 2; counter < rgbValues.Length; counter += 3)
            for (int counter = 0; counter < rgbValues.Length; counter++)
            {
                //这里可以针对rgb的值进行处理 像素处理
                rgb = rgbValues[counter];

                if (rgb < 100) 
                {
                 ///当该位置rgb值小于100时 将其修改成0
                 rgbValues[counter] = 0; 
                }
            }
            //把RGB数组值拷回位图
            System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes);
            //解锁
            BasicImageBox.UnlockBits(bmpData);

这样处理要比前者效率高很多

C#控制台程序右上角的关闭按钮怎么屏蔽
使用C#为MP3文件添加封面、专辑和歌手信息的实例教程
多线程使用Image.FromFile 加载图片时出现图片文件被锁定无法更新
C# 实现对windows防火墙的常规操作管理白名单、黑名单
C# 将数组分组进行平均拆分成多个数组 代码如何实现
vs编译时报错 不安全代码只会在使用 /unsafe 编译的情况下出现
.NET5框架下使用HttpListener类实现http接口监听替代OWIN自我寄宿
C# 二维码生成源码|使用ThoughtWorks.QRCode 实现根据文本内容生成二维码
 C# 实现 Rsa字符串非对称加密简单例子
VS错误提示无法嵌入互操作类型“IWshShell_ClassClass”,请改用适用的接口的解决方法
C# 操作DOS添加端口防火墙名单
C#实现查询某个端口是被哪个程序进程占用
暂无相关内容...
基于.NET4.0实现的目录文件新增监视并自动化上传至ftp完整流程工具源码
[人脸检测]基于C#OpenCvSharp+haarcascade人脸、人眼模型实现人脸检测源码
.NET5+C# WPF实现图片添加倾斜文字平铺水印工具源码
C#基于OpenCVSharp实现图片对比相似度百分比源码下载
C#结合虫洞软件(Wormhole)实现自动登录到手机版百度网盘的流程源码
免责声明 部分转载分享内容若侵犯您的权益,还请 邮件联系 侵删