OpenCV(5) 对比度和亮度
公式:
两个参数 \alpha > 0 和 \beta 一般称作 增益 和 偏置 参数。我们往往用这两个参数来分别控制 对比度 和 亮度 。
- #include "stdafx.h"
- #include<iostream>
- #include<thread>
- #include<vector>
- #include <opencv2/core/core.hpp>
- #include <opencv2/contrib/contrib.hpp>
- #include <opencv2/highgui/highgui.hpp>
- #include <opencv2/imgproc/imgproc.hpp>
- #include <opencv2/objdetect/objdetect.hpp>
- using
namespace cv; - using
namespace std; - int g_slider_position = 0, g_slider_position2 = 0;
- Mat image;
- Mat new_image;
- double alpha, beta;
- void onTrackingbarSlide(int pos)
- {
- new_image = Mat::zeros(image.size(), image.type());
- beta = pos;
- for (int y = 0; y < image.rows; y++)
- {
- for (int x = 0; x < image.cols; x++)
- {
- for (int c = 0; c < 3; c++)
- {
- //saturate_cast 防止数据溢出
- new_image.at<Vec3b>(y, x)[c] = saturate_cast<uchar>(alpha*(image.at<Vec3b>(y, x)[c]) + beta);
- }
- }
- }
- imshow("New Image", new_image);
- }
- void onTrackingbarSlide2(int pos)
- {
- new_image = Mat::zeros(image.size(), image.type());
- alpha = (double)pos / 10.0;
- for (int y = 0; y < image.rows; y++)
- {
- for (int x = 0; x < image.cols; x++)
- {
- for (int c = 0; c < 3; c++)
- {
- //saturate_cast 防止数据溢出
- new_image.at<Vec3b>(y, x)[c] = saturate_cast<uchar>(alpha*(image.at<Vec3b>(y, x)[c]) + beta);
- }
- }
- }
- imshow("New Image", new_image);
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- /// 读入用户提供的图像
- image = imread("E:\\myImage\\sql.png");
- //初始化为0的数组
- Mat new_image = Mat::zeros(image.size(), image.type());
- /// 初始化
- cout << "* Enter the alpha value [1.0-3.0]: ";
- cin >> alpha;
- cout << "* Enter the beta value [0-100]: ";
- cin >> beta;
- /// 创建窗口
- namedWindow("Original Image", 1); // 1:WINDOW_AUTOSIZE
- namedWindow("New Image", 1);
- cvCreateTrackbar("亮度(增益)", "New Image", &g_slider_position, 100, onTrackingbarSlide);
- cvCreateTrackbar("对比度(偏置)", "New Image", &g_slider_position2, 30, onTrackingbarSlide2);
- /// 执行运算 new_image(i,j) = alpha*image(i,j) + beta
- for (int y = 0; y < image.rows; y++)
- {
- for (int x = 0; x < image.cols; x++)
- {
- for (int c = 0; c < 3; c++)
- {
- //saturate_cast 防止数据溢出
- new_image.at<Vec3b>(y, x)[c] = saturate_cast<uchar>(alpha*(image.at<Vec3b>(y, x)[c]) + beta);
- }
- }
- }
- /// 显示图像
- imshow("Original Image", image);
- imshow("New Image", new_image);
- /// 等待用户按键
- waitKey();
- return 0;
- }

参考:
http://blog.csdn.net/mjlsuccess/article/details/12401839
OpenCV(5) 对比度和亮度的更多相关文章
- opencv学习笔记-图像对比度、亮度调节
在数学中我们学过线性理论,在图像亮度和对比度调节中同样适用,看下面这个公式: 在图像像素中其中: 参数f(x)表示源图像像素. 参数g(x) 表示输出图像像素. 参数a(需要满足a>0)被称为增 ...
- opencv ,亮度调整【【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整
http://blog.csdn.net/poem_qianmo/article/details/21479533 [OpenCV入门教程之六] 创建Trackbar & 图像对比度.亮度值调 ...
- C++ Opencv createTrackbar()创建滑动条实现对比度、亮度调节及注意事项
一.对比度.亮度概念普及 1.1对比度 对比度指的是一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量,差异范围越大代表对比越大,差异范围越小代表对比越小.对比度对视觉效果的影响非常关键,一般 ...
- Opencv学习笔记4:Opencv处理调整图片亮度和对比度
一.理论基础 在数学中我们学过线性理论,在图像亮度和对比度调节中同样适用,看下面这个公式: 在图像像素中其中: 参数f(x)表示源图像像素. 参数g(x) 表示输出图像像素. 参数a(需要满足a> ...
- OpenCV学习:改变图像的对比度和亮度
本实例演示简单地改变图像的对比度和亮度,使用了如下线性变换来实现像素值的遍历操作: The parameters α > 0 and β often called the gain and bi ...
- OpenCV入门:(五:更改图片对比度和亮度)
1. 理论 图片的转换就是将图片中的每个像素点经过一定的变换,得到新像素点,新像素点组合成一张新的图片. 改变图片对比度和亮度的变换如下: 其中α和β被称作增益参数(gain parameter)和偏 ...
- opencv 3 core组件进阶(2 ROI区域图像叠加&图像混合;分离颜色通道、多通道图像混合;图像对比度,亮度值调整)
ROI区域图像叠加&图像混合 #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp&g ...
- OpenCV --- 修改图像的对比度、亮度 、RGB转Gray图像、修改图像的尺寸
#include <opencv2/core.hpp> #include <opencv2/imgcodecs.hpp> #include <opencv2/highgu ...
- 学习 opencv---(5) 创建Trackbar(活动条) &图像对比度,亮度值调整
学习如何在opencv 中用trackbar 函数创建和使用 轨迹条,以及图像对比度,亮度值的动态调整 一.OpenCV中轨迹条(Trackbar)的创建和使用 [1]创建轨迹条-----create ...
随机推荐
- ASP.Net后台 实现先弹出对话框,再跳转到另一个网页的实现方法
解决办法如下: Response.Write("<script>alert('想在对话框中显示的内容');window.navigate(‘要转到的页面的URL’)</sc ...
- SQLServer视图
视图简介:通过定义 SELECT 语句以检索将在视图中显示的数据来创建视图.SELECT 语句引用的数据表称为视图的基表.在SQL Server 2005系统中,可以把视图分为3种类型,即标准视图,索 ...
- python中使用chrome进行自动化测试,浏览器变量设置
- Android -- Looper、Handler、MessageQueue等类之间关系的序列图
原文:Android源码解析之(二)-->异步消息机制 通过阅读文章及其中提到的一些参考文章,模模糊糊的理解了Android的异步消息机制.为了能够进行消化吸收,决定把各类之间的交互通过图的形式 ...
- Linux & Oracle 安装目录说明
http://blog.itpub.net/9399028/viewspace-775297/
- wifi display代码 分析
转自:http://blog.csdn.net/lilian0118/article/details/23168531 这一章中我们来看Wifi Display连接过程的建立,包含P2P的部分和RTS ...
- php支付宝接口用法
现在流行的网站支持平台,支付宝当仁不让的老大了,现在我们就来告诉你如何使用支付宝api来做第三方支付,把支付宝放到自己网站来, alipay_config.php配置程序如下: <?php */ ...
- APP消息推送:通知和透传
目前市场上的消息推送方式有两种:通知和透传.什么是透传?透传即是透明传送,即传送网络无论传输业务如何,只负责将需要传送的业务传送到目的节点,同时保证传输的质量即可,而不对传输的业务进行处理.透传消息, ...
- 数据库递归查询-CTE
1.公用表表达式(CTE)的定义 公用表达式的定义包含三部分: 公用表表达式的名字(在WITH之后) 所涉及的列名(可选) 一个SELECT语句(紧跟AS之后), 公用表表达式的好处之一是可以在接下来 ...
- Memcached缓存在.Net 中的使用(memcacheddotnet)
缓存对于提高大数据量的网站性能无疑不是一个很好的解决方案,针对缓存的使用网上同仁介绍很多,再次我仅仅分享一下自己对Memcached使用的简单介绍.Memchached的使用通过第三方DLL来完成,常 ...