C# 图片处理之:彩色图片转为黑白图 .
首先解释下所谓的黑白图片。其实更准确地应该叫256级灰度图。当一个颜色点的R=G=B时,就是我们所谓的“灰色”。由于RGB的取值范围在[0,255],所以一共只有256种可能。
所以彩色图片转为黑白图片的原理非常简单。只要扫描彩图的每一点,让输出图对应点的R=G=B就成了。现在问题的关键就是如何取值了。
一般有两种,一种是彩图RGB三分量的算数平均值,另一种是加权平均值。加权平均是考虑到人类眼睛对不同分量的敏感程度。
具体代码如下:
/**//// <summary>
/// 变成黑白图
/// </summary>
/// <param name="bmp">原始图</param>
/// <param name="mode">模式。0:加权平均 1:算数平均</param>
/// <returns></returns>
private Bitmap ToGray(Bitmap bmp,int mode)
...{
if (bmp == null)
...{
return null;
}
int w = bmp.Width;
int h = bmp.Height;
try
...{
byte newColor = 0;
BitmapData srcData = bmp.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
unsafe
...{
byte* p = (byte*)srcData.Scan0.ToPointer();
for (int y = 0; y < h; y++)
...{
for (int x = 0; x < w; x++)
...{
if (mode == 0) // 加权平均
...{
newColor = (byte)((float)p[0] * 0.114f + (float)p[1] * 0.587f + (float)p[2] * 0.299f);
}
else // 算数平均
...{
newColor = (byte)((float)(p[0] + p[1] + p[2]) / 3.0f);
}
p[0] = newColor;
p[1] = newColor;
p[2] = newColor;
p += 3;
}
p += srcData.Stride - w * 3;
}
bmp.UnlockBits(srcData);
return bmp;
}
}
catch
...{
return null;
}
}
转载于:https://www.cnblogs.com/chennie/archive/2012/01/17/2324597.html
C# 图片处理之:彩色图片转为黑白图 .相关推荐
- java 生成纯色图片_java实现切图并且判断图片是不是纯色/彩色图片
java实现切图并且判断图片是不是纯色/彩色图片 发布时间:2020-08-30 15:45:30 来源:脚本之家 阅读:92 作者:点墨花花 整理文档,搜刮出一个java实现切图并且判断图片是否是纯 ...
- MATLAB应用实战系列(七十一)-MATLAB实战应用案例:图像处理将灰度图片变成负片彩色图片转换成灰度图片
前言 本文目录 获取图片的信息 将灰度图片变成负片 彩色图片转换成灰度图片 图像噪声的添加 加10次噪声 colorbar的使用 将数据转换为图片 clc clearA是结构体名,用来存储读入的图像数 ...
- C# 图片处理之:彩色图片转为黑白图
首先解释下所谓的黑白图片.其实更准确地应该叫256级灰度图.当一个颜色点的R=G=B时,就是我们所谓的"灰色".由于RGB的取值范围在[0,255],所以一共只有256种可能. 所 ...
- python怎么输出图片_python输出彩色图片python 时间处理
在实际中遇到一个时间处理问题,需要将 Sep 06, 2014 19:30 (UTC 时间) 和 当前时间比较早晚,知道 此 2014-09-06 19:30 格式时间的运算.因此,在处理时,就想 w ...
- 灰度图片维度与彩色图片维度-python-scikit-image包
from skimage import io,data,color import matplotlib.pyplot as plt img=data.chelsea() print(img.shape ...
- 黑白图片复原为彩色Picture Colorizer(图片着色器)
我的曾祖父留下一个黑白照片那是一百年之间了,长辈听说我学习的计算机对于P图应该是算了解的,于是乎我寻找到这个软件可以将黑白的图片复原为彩色图片,分享给大家 Picture Colorizer 中文版下 ...
- opencv 学习笔记——读入一张图片,并将其转为灰度图
读入一张RGB彩色图片,并将其转为灰度图 源码如下: #include <opencv2\highgui\highgui.hpp> #include <opencv2/opencv. ...
- 怎样使用PS将彩色图片转为黑白图片
怎样使用PS将彩色图片转为黑白图片 当我们在使用PS将彩色图片转换为黑白,有以下方法: 原图: 1 图像->模式->灰度: 2 图像->调整->黑白: 3 图像->调整- ...
- 彩色图片转为黑白灰阶图片
彩色图片转为黑白灰阶图片, 使用算法如下. 贴上几张效果图: 附件为demo演示工具.
最新文章
- 图神经网络从入门到入门
- 详解getchar()函数与缓冲区
- Proxy pattern-代理模式
- java 枚举 扑克牌_Java入门第三季7-1简易扑克牌作业
- 建模matlab仿真视频教程,Simulink建模与仿真视频教程
- linux环境下安装mencoder转码工具
- 14 、软件测试-MySQL的基本使用方法-增删改查
- 夜晚怎么能不吃宵夜呢
- 我的世界Mod整合包中的Mod下载
- luoguP4568 [JLOI2011]飞行路线
- SpringCloud(三):监控中心 hystrix turbine
- 关于在ubuntu server 14.04上安装docker以及git之笔记
- 分布式系统架构与分布式事务十问十答,小伙伴们赶快收藏吧
- python操作CAD转存dwg文件
- 解决chrome71.0以上版本flash永久允许
- OJ 1199 堆积木
- wgt文件怎么安装到手机_uni-app开发经验分享十二: Android平台应用启动时读写手机存储、访问设备信息(如IMEI)等权限策略及提示信息...
- 安徽财经大学432统计学考研历年真题库资料
- 在南方旅游 VS 在北方旅游
- 列表(listview)实现CheckBox全选效果
热门文章
- vsftpd的简单安装和配置(只有三步)
- js 获取当前gmt时间_javascript-如何将日期转换为GMT?
- 安卓mqtt调试工具_MOTT工具调试阿里云物联网平台
- python爬虫获取下一页url_Python爬虫获取页面所有URL链接过程详解
- java http请求 工具类_java模拟http请求调用远程接口工具类
- 两个摄像头合成一路_小米手机成功开发出伸缩式摄像头,秒变单反,这次雷军又火了...
- linux as4,as4是linux系统吗?
- mysql_install_db创建空库_MySQL数据库的初始化mysql_install_db
- ssm整合oracle分页,java实现ssm分页工具类及其使用方法
- android emulator培训,android emulator(未完)