C#实现把彩色图片灰度化代码分享

彩色图片转为灰度图的公式如下:

代码如下:

gray(i,j) = 0.299 * Red(i,j)+0.587*Green(i,j)+0.114*Blue(i,j)

其中gray(i,j) 为转化后的灰度值  (i,j)为像素点的位置。

源代码如下:

public static Bitmap ChangeGray(Bitmap b)
 {
  BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite,
   PixelFormat.Format24bppRgb);
  int stride = bmData.Stride;   // 扫描的宽度 

  unsafe
  {
   byte* p = (byte*)bmData.Scan0.ToPointer(); // 获取图像首地址
   int nOffset = stride - b.Width * 3;  // 实际宽度与系统宽度的距离
   byte red, green, blue;
   for (int y = 0; y < b.Height; ++y)
   {
    for (int x = 0; x < b.Width; ++x)
    {
     blue = p[0];
     green = p[1];
     red = p[2]; 

     p[0] = p[1] = p[2] = (byte)(.299 * red + .587 * green + .114 * blue); // 转换公式
     p += 3;  // 跳过3个字节处理下个像素点
    }
    p += nOffset; // 加上间隔
   }
  }
  b.UnlockBits(bmData); // 解锁
  return b;
 } 
(0)

相关推荐

  • 基于c#图像灰度化、灰度反转、二值化的实现方法详解

    图像灰度化:将彩色图像转化成为灰度图像的过程成为图像的灰度化处理.彩色图像中的每个像素的颜色有R.G.B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围.而灰度图像是R.G.B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理种一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些.灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征.图像的灰度

  • c#中实现图片灰度化技术详解

    去年买了本数字图像处理算法,一直都没有看,前几个星期都一直忙着工作上的活,趁这阶段悠闲点,玩一玩图片处理,这玩意还是非常有意思的. 以前我们在做Web上的用户注册时,通常都会做一个验证码,大家都知道用来防止暴力注册的,当然提到验证码大家都知道C#里面有一个Bitmap类专门用来处理图片的,好吧,这一篇我们从最简单的"图片灰度化"说起. 一:图片灰度化 我们都知道,位图是由一个一个像素点组成的,像素点可能是红色,橙色,粉色等等,这些颜色我们都知道是用RGB来表示的. 每个颜色分量都是一个

  • C#彩色图片灰度化算法实例

    本文实例讲述了C#彩色图片灰度化实现方法.分享给大家供大家参考.具体方法如下: 主要功能代码如下: 复制代码 代码如下: public static Bitmap MakeGrayscale(Bitmap original) { //create a blank bitmap the same size as original Bitmap newBitmap = new Bitmap(original.Width, original.Height); //get a graphics obje

  • C#灰度化图像的实例代码

    用伪语句可以表示如下 public bitmap GrayScal(bitmap orgbmp){    建立一个与原图片等大的8位的图片    取出原图像中的每一个点    新图像的点=原图像点的红色量*系数1+绿色量*系数2+黄色量*系统3    返回新图像} 复制代码 代码如下: /// <summary>    /// 对图像进行点运算,    /// </summary>    public class PointTrans    {        private rea

  • 解析C#彩色图像灰度化算法的实现代码详解

    代码如下所示: 复制代码 代码如下: public static Bitmap MakeGrayscale(Bitmap original)        {            //create a blank bitmap the same size as original            Bitmap newBitmap = new Bitmap(original.Width, original.Height);            //get a graphics object

  • C#数字图象处理之图像灰度化方法

    本文实例讲述了C#数字图象处理之图像灰度化方法.分享给大家供大家参考.具体如下: //定义图像灰度化函数 private static Bitmap PGray(Bitmap src) { int w = src.Width; int h = src.Height; //构建与原图像大小一样的模版图像 Bitmap dstBitmap = new Bitmap(src.Width, src.Height, System.Drawing.Imaging.PixelFormat.Format24bp

  • C#实现把彩色图片灰度化代码分享

    彩色图片转为灰度图的公式如下: 复制代码 代码如下: gray(i,j) = 0.299 * Red(i,j)+0.587*Green(i,j)+0.114*Blue(i,j) 其中gray(i,j) 为转化后的灰度值  (i,j)为像素点的位置. 源代码如下: public static Bitmap ChangeGray(Bitmap b) { BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), Ima

  • Python批量将图片灰度化的实现代码

    技术关键 os 模块的使用 使用 os.getcwd 获取当前路径 使用 os.listdir()获取文件列表 使用 os.path.splitext() 分割文件名和扩展名 使用 PLI 的 convert('L') 方法将图片转为灰度 代码实现 from PIL import Image import os path = os.getcwd() # 获取当前路径 file_list = os.listdir() for file in file_list: filename = os.pat

  • python图片灰度化处理的几种方法

    今天在学习的时候,发现scipy.misc中的imread提取图片的方法被弃用了.太生气了! 只好使用了matplotlib.pyplot中的imread了,可是当我发现他不能直接通过True来提取灰度图片时,我崩溃了 上网查了一下,了解了灰度化处理的几种方法: 首先先解释一下,彩色图片一般是由RGB组成,其实就是3个二维数组叠加而成.我们也就能看到一些彩色图片了.当R=G=B时,彩色图片就会变成一种灰度颜色,就是我们俗称的"黑白照片".所以灰度颜色的图片其实就是一个二维数组. 灰度化

  • jQuery左右滚动支持图片放大缩略图图片轮播代码分享

    本文实例讲述了jQuery左右滚动支持图片放大缩略图图片轮播效果.分享给大家供大家参考.具体如下: 这是一款基于jQuery实现的左右滚动支持图片放大缩略图图片轮播效果,常用的jQuery图片左右轮播效果,同时支持底部缩略图左右滚动展示,点击大图片后支持放大效果. 运行效果图:                                     -------------------查看效果------------------- 小提示:浏览器中如果不能正常运行,可以尝试切换浏览模式. 为大

  • jquery的幻灯片图片切换效果代码分享

    本文实例讲述了jquery的幻灯片图片切换效果.分享给大家供大家参考.具体如下: 这是一款基于jquery的幻灯片图片切换效果代码,有缩略图和标题,可以自定义标题. 运行效果图:     -------------------查看效果 下载源码------------------- 小提示:浏览器中如果不能正常运行,可以尝试切换浏览模式. (1)在head区域引入CSS样式: <LINK rel=stylesheet type=text/css href="css/lrtk.css&quo

  • js带前后翻页的图片切换效果代码分享

    本文实例讲述了javascript带前后翻页的图片切换效果.分享给大家供大家参考.具体如下: 这是一款基于javascript带前后翻页的图片切换效果代码,实现过程很简单. 运行效果图: -------------------查看效果------------------- 小提示:浏览器中如果不能正常运行,可以尝试切换浏览模式. 在head区域引入CSS样式: <link href="css/css.css" rel="stylesheet" type=&qu

  • js鼠标点击图片切换效果代码分享

    本文实例讲述了js鼠标点击图片切换效果.分享给大家供大家参考.具体如下: 实现原理很简单,其实是多张图片叠加起来,点击图片后依次赋予图片一个class,使其看起来在表面而已,点击图片,可以实现图片的不断切换效果. 运行效果图:                                      -------------------查看效果------------------- 小提示:浏览器中如果不能正常运行,可以尝试切换浏览模式. 为大家分享的js鼠标点击图片切换效果代码如下 <hea

  • JavaScript图片轮播代码分享

    为大家分享的JavaScript图片轮播代码如下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta

随机推荐