OpenCvSharp 学习笔记6 --图像亮度和对比度调整
一 理论:
图像变换有两种操作:
1:点操作 – 像素变换
2:区域操作 --邻域像素操作,图像周围的像素操作
调整图像亮度和对比度属于像素变换的点操作。
g(x,y)=αf(x,y)+βg(x,y)=\alpha f(x,y) + \beta g(x,y)=αf(x,y)+β
其中系数α>0,β是增益值其中 系数 \alpha \gt0 , \beta 是增益值 其中系数α>0,β是增益值
说明:alpha值越大,像素之间的差值越大,对比度越强烈。 beta值是用于提高图片亮度增益值
二 演示:
代码:
static void Main(string[] args){string imagePath = @"C:\Users\whx\Desktop\opcvImage\m3.jpg";Funtion1(imagePath);}
public static void Funtion1(string path){//读入的图像是RGB 但是像素顺序是BGRusing (Mat src = Cv2.ImRead(path, ImreadModes.AnyColor | ImreadModes.AnyDepth))using (Mat dst = new Mat(src.Size(),src.Type())){int height = src.Rows;int width = src.Cols;int cn = src.Channels(); //通道数float alpha = 1.2f; //系数float beta = 60f; //增益for (int row = 0; row < height; row++){for (int col = 0; col < width; col++){if(cn==1){float color = src.At<float>(row, col);dst.Set<float>(row, col, color);}else if(cn==3){Vec3b color = new Vec3b{Item0 = (byte)Saturate.Saturate_cast((src.At<Vec3b>(row, col).Item0) * alpha + beta), //BItem1 = (byte)Saturate.Saturate_cast((src.At<Vec3b>(row, col).Item1) * alpha + beta), //GItem2 = (byte)Saturate.Saturate_cast((src.At<Vec3b>(row, col).Item2) * alpha + beta) //R};//Vec3f:也可以 要转换 src.ConvertTo(src, MatType.CV_32F); //转换后 Vec3f float类型 C# 报错 ,C++ 中可以//Vec3f color = new Vec3f//{// Item0 = Saturate.Saturate_cast((src.At<Vec3f>(row, col).Item0) * alpha + beta), //B// Item1 = Saturate.Saturate_cast((src.At<Vec3f>(row, col).Item1) * alpha + beta), //G// Item2 = Saturate.Saturate_cast((src.At<Vec3f>(row, col).Item2) * alpha + beta) //R//};dst.Set<Vec3b>(row, col, color);}}} using(new Window("dst Image",WindowMode.Normal,dst))using (new Window("src Image", WindowMode.Normal, src)){Cv2.WaitKey(0);}}}
输出结果:
对比度和亮度提高很明显。
修改系数 和增益值 float alpha = 1f; float beta = 60f; 再次输出图像
float alpha = 1f; float beta = 60f 对比度没有变化,亮度提高了。可以调整这两个参数来达到预期的效果。
OpenCvSharp 学习笔记6 --图像亮度和对比度调整相关推荐
- PS学习笔记——通过三种方式调整人像照片亮度
第一种方案: 在图像--调整菜单,有一个亮度/对比度选项.打开这个菜单可以通过简单的拖移滑杆来对图像亮度进行调整. 第二种方案: 依然在图像--调整菜单,使用色阶菜单.与第一种方案有何区别呢?第一种方 ...
- 7.OpenCvSharp图像的文件夹的批量读取、表单显示及多图拼接——c#OpenCvSharp学习笔记
0.项目概述 项目实现了基于OpenCvSharp进行基本的的图像多图批量拼接,可批量读取在同一个文件内多个图像,可显示每张图片的信息,还可以进行单图逐个预览,并进行多图批量拼接,最后将图片保存到本地 ...
- 8.OpenCvSharp图像灰度处理(分量法、最大值法、平均法、加权平均法)——c#OpenCvSharp学习笔记
OpenCvSharp图像灰度处理(分量法.最大值法.平均法.加权平均法) 项目概述 项目实现了基于OpenCvSharp实现了图像灰度处理,包含了分量法.最大值法.平均法.加权平均法等灰度处理方法的 ...
- 图像的像素原点_超火的机器视觉OpenCVSharp学习笔记3——图像形态学处理
一. 图像形态学处理的概念 在机器视觉中,我们获得一张图片首先要进行预处理,去掉噪声等杂乱的地方,突出我们感兴趣的区域,数字图像处理中的形态学处理是指将数字形态学作为工具从图像中提取对于表达和描绘区域 ...
- 2.2 获取图像感兴趣区域_超火的机器视觉OpenCVSharp学习笔记3——图像形态学处理...
一. 图像形态学处理的概念 在机器视觉中,我们获得一张图片首先要进行预处理,去掉噪声等杂乱的地方,突出我们感兴趣的区域,数字图像处理中的形态学处理是指将数字形态学作为工具从图像中提取对于表达和描绘区域 ...
- OpenCvSharp 学习笔记7 --绘制图形和文字
一 绘制线条 API :Cv2.Line() 参数 说明 img: 源图像 pt1: 第一个点 pt2: 第二个点 color 线条颜色 thickness: 线条的厚度(粗细) lineType: ...
- opencv 调整图像亮度和对比度
图像亮度 以灰度图像为例,图像亮度指的是图像的明暗程度,图像的像素值整体越接近于255,图像越亮,反之越接近于0,图像越暗. 图像对比度 假设灰度图像的像素值的范围为[a,b],如果b-a的值越接近于 ...
- OpenCV学习笔记(三):图像对比度、亮度调整源码
OpenCV学习笔记(三):图像对比度.亮度调整源码 主函数: #include <opencv2/opencv.hpp>using namespace cv;using namespac ...
- UE4 Material 101学习笔记——30-37 植物叶片(透光/mask/面片隐藏/法线调整/AO/渐隐/世界空间色彩/随风舞动)
UE4 Material 101学习笔记--30-37 植物叶片(透光/mask/面片隐藏/法线调整/AO/渐隐/世界空间色彩/随风舞动) Lec30 叶子透光 Foliage Translucenc ...
最新文章
- 高速上车辆追尾无法移动 众人齐力抬车温暖归途
- 利用WCF的callback机制开发一个简单的多人游戏模型
- android:windowSoftInputMode属性
- 合集| 21 篇技术文章,带你从零入门 K8s
- java中的step_Java中finalize()
- Office 2007无法卸载也无法安装的解决
- 内网穿透小知识|什么是端口映射?端口映射使用操作指南
- IP 协议报文格式 【IPv4】
- 鸡兔同笼头吃20脚56c语言,鸡兔同笼问题练习题答案.doc
- 易知大学“大数据挖掘与分析(Python)”免费学习平台
- caiguai docker-xware_黑科技——通过docker+xware在群辉DSM 6.0系统实现迅雷远程下载-Go语言中文社区...
- CANoe如何查看总线负载率?
- 阿里 替换mysql的数据库_mysql替换数据库
- [POJ1187] 陨石的秘密
- C语言sem Take函数,信号量函数sem.c
- [BZOJ1513]Tet-Tetris 3D
- 怎样在一张图片上叠加另一张图片
- 单个象棋棋子图片!png
- 看看苹果面试提的44个奇葩问题,你能回答出几个
- python应用炒股_用python炒股
热门文章
- 计算机考试打印测试页,通过电脑打印测试页(适用于 Win8/8.1/10)
- 学习了解GET,POST传参,编写PHP代码,回显GET,POST输入
- 真正的测试 =“半个产品+半个开发”
- STM32F051C8T6控制LED
- STM32串口通信原理及实验讲解
- uni-app APP图标配置
- 海康威视的出海“生意经”
- 很多人还不知道中视频计划手机上发布多端横竖屏视频的方法
- 【帮转】浙大未企2109届X计划创业实践开启——创燃花火,意点未来
- What is Nginx?