C#灰度化图像的实例代码
时间:2023-07-14 07:35:34
用伪语句可以表示如下
public bitmap GrayScal(bitmap orgbmp)
{
建立一个与原图片等大的8位的图片
取出原图像中的每一个点
新图像的点=原图像点的红色量*系数1+绿色量*系数2+黄色量*系统3
返回新图像
}
/// <summary>
/// 对图像进行点运算,
/// </summary>
public class PointTrans
{
private readonly double cb;
private readonly double cg;
private readonly double cr;
/// <summary>
/// 做点运算,要给每一个偏量,做一下设置,比如做图像的灰度图就需要现设置
/// </summary>
/// <param name="cr"></param>
/// <param name="cg"></param>
/// <param name="cb"></param>
public PointTrans(double cr, double cg, double cb)
{
this.cr = cr;
this.cg = cg;
this.cb = cb;
}
public Bitmap GrayScaleBmp(Bitmap orgData)
{
int bmpWidth = orgData.Width, bmpHeight = orgData.Height;
Bitmap destData = ImageTools.CreateGrayscaleImage(bmpWidth, bmpHeight);
Rectangle bmpRect=new Rectangle(0,0,bmpWidth,bmpHeight);
BitmapData orgBmpData = orgData.LockBits(bmpRect, ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
BitmapData destBmpData = destData.LockBits(bmpRect, ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed);
ProcessFilter(orgBmpData,destBmpData);
orgData.UnlockBits(orgBmpData);
destData.UnlockBits(destBmpData);
return destData;
}
protected unsafe void ProcessFilter(BitmapData sourceData, BitmapData destinationData)
{
// get width and height
int width = sourceData.Width;
int height = sourceData.Height;
int srcOffset = sourceData.Stride - width*3;
int dstOffset = destinationData.Stride - width;
// do the job
byte* src = (byte*) sourceData.Scan0.ToPointer();
byte* dst = (byte*) destinationData.Scan0.ToPointer();
// for each line
for (int y = 0; y < height; y++)
{
// for each pixel
for (int x = 0; x < width; x++, src += 3, dst++)
{
*dst = (byte) (cr*src[RGB.R] + cg*src[RGB.G] + cb*src[RGB.B]);
}
src += srcOffset;
dst += dstOffset;
}
}
}
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
一文搞懂C#实现读写文本文件中的数据
![](https://img.aspxhome.com/file/2023/8/87048_0s.png)
JAVA 静态代理模式详解及实例应用
android自定义view用path画长方形
![](https://img.aspxhome.com/file/2023/7/89547_0s.gif)
详解SpringCloud微服务之Rest
Java 多用户登录限制的实现方法
spring使用OXM进行对象XML映射解析
![](https://img.aspxhome.com/file/2023/1/60661_0s.jpg)
Java接入支付宝授权第三方登录的完整步骤
![](https://img.aspxhome.com/file/2023/3/128813_0s.png)
C#词法分析器之构造NFA详解
![](https://img.aspxhome.com/file/2023/3/116623_0s.png)
详解Android中Notification通知提醒
![](https://img.aspxhome.com/file/2023/0/120080_0s.png)
springboot嵌套子类使用方式—前端与后台开发的注意事项
Java学习基础之安装JDK/配置JDK环境&IEDA工具安装
![](https://img.aspxhome.com/file/2023/5/60315_0s.png)
SpringBoot集成MybatisPlus报错的解决方案
![](https://img.aspxhome.com/file/2023/0/68140_0s.jpg)
Java的Spring框架中AOP项目的一般配置和部署教程
详解java nio中的select和channel
Android仿微信朋友圈点击加号添加图片功能
![](https://img.aspxhome.com/file/2023/7/90167_0s.jpg)
java代理模式(静态代理、动态代理、cglib代理)
![](https://img.aspxhome.com/file/2023/7/103827_0s.png)
浅谈C# 中的委托和事件
![](https://img.aspxhome.com/file/2023/3/88413_0s.gif)
C#加密解密类实例程序
Java新手学习之IO流的简单使用
![](https://img.aspxhome.com/file/2023/6/58196_0s.jpg)
Android TextSwitcher文本切换器和ViewFlipper使用详解
![](https://img.aspxhome.com/file/2023/3/138413_0s.png)