//-----------------------------------【头文件包含部分】---------------------------------------
//  描述:包含程序所依赖的头文件
//----------------------------------------------------------------------------------------------
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>//-----------------------------------【命名空间声明部分】---------------------------------------
//  描述:包含程序所使用的命名空间
//-----------------------------------------------------------------------------------------------
using namespace std;
using namespace cv;//-----------------------------------【全局函数声明部分】--------------------------------------
//  描述:全局函数声明
//-----------------------------------------------------------------------------------------------
static void ContrastAndBright(int, void *);//-----------------------------------【全局变量声明部分】--------------------------------------
//  描述:全局变量声明
//-----------------------------------------------------------------------------------------------
int g_nContrastValue; //对比度值
int g_nBrightValue;  //亮度值
Mat g_srcImage, g_dstImage;
//-----------------------------------【main( )函数】--------------------------------------------
//  描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------------------------------------------------------
int main()
{// 读入用户提供的图像g_srcImage = imread("1.png");if (!g_srcImage.data) { printf("Oh,no,读取g_srcImage图片错误~! \n"); return false; }g_dstImage = Mat::zeros(g_srcImage.size(), g_srcImage.type());//设定对比度和亮度的初值g_nContrastValue = 80;g_nBrightValue = 80;//创建窗口namedWindow("【效果图窗口】", 1);//创建轨迹条createTrackbar("对比度:", "【效果图窗口】", &g_nContrastValue, 300, ContrastAndBright);createTrackbar("亮   度:", "【效果图窗口】", &g_nBrightValue, 200, ContrastAndBright);//调用回调函数ContrastAndBright(g_nContrastValue, 0);ContrastAndBright(g_nBrightValue, 0);//输出一些帮助信息cout << endl << "\t运行成功,请调整滚动条观察图像效果\n\n"<< "\t按下“q”键时,程序退出\n";//按下“q”键时,程序退出while (char(waitKey(1)) != 'q') {}return 0;
}//-----------------------------【ContrastAndBright( )函数】------------------------------------
//  描述:改变图像对比度和亮度值的回调函数
//-----------------------------------------------------------------------------------------------
static void ContrastAndBright(int, void *)
{// 创建窗口namedWindow("【原始图窗口】", 1);// 三个for循环,执行运算 g_dstImage(i,j) = a*g_srcImage(i,j) + bfor (int y = 0; y < g_srcImage.rows; y++){for (int x = 0; x < g_srcImage.cols; x++){for (int c = 0; c < 3; c++){g_dstImage.at<Vec3b>(y, x)[c] = saturate_cast<uchar>((g_nContrastValue*0.01)*(g_srcImage.at<Vec3b>(y, x)[c]) + g_nBrightValue);}}}// 显示图像imshow("【原始图窗口】", g_srcImage);imshow("【效果图窗口】", g_dstImage);
}

opencv 图像对比度、亮度值调整 和滑动条相关推荐

  1. opencv图像对比度亮度调节

    图像对比度亮度调节 #include <opencv2/highgui.hpp> #include <iostream>using namespace std; using n ...

  2. opencv计算图像亮度调节_OpenCV教程创建Trackbar图像对比度、亮度值调整

    这篇文章中我们一起学习了如何在OpenCV中用createTrackbar函数创建和使用轨迹条,以及图像对比度.亮度值的动态调整. 文章首先详细讲解了OpenCV2.0中的新版创建轨迹条的函数crea ...

  3. 【OpenCV】OpenCV实战从入门到精通之 -- 图像对比度、亮度值调整

    理论依据 首先了解一下算子的概念.一般的图像处理算子都是一个函数,它接受一个或多个输入图像,并产生输出图像.下面是算子的一般形式: 或者 图像亮度和对比度的次奥做属于图像变换中比较简单的点操作(poi ...

  4. 《OpenCV3编程入门》学习笔记5 Core组件进阶(四)图像对比度、亮度值调整

    第5章 Core组件进阶 5.4 图像对比度.亮度值调整 5.4.1 理论依据 1.算子:一般图像处理算子都是一个函数,接受一个或多个输入图像,并产生输出图像 2.算子一般形式: 3.点操作(poin ...

  5. 转载:【opencv入门教程之六】创建Trackbar图片对比度、亮度值调整

    [OpenCV入门教程之六] 创建Trackbar & 图像对比度.亮度值调整 浅墨_毛星云 2014-03-18 21:43:18 103746 收藏 21 最后发布:2014-03-18 ...

  6. 【图像处理】OpenCV系列五 --- 图像对比度、亮度值调整

    今天呢,我们一起学习一下,如何调整图像的对比度以及亮度. 一.原理 调整图像亮度与对比度所用的公式 g(i,j) = a * f(i,j) + b 其中,i 和 j 表示像素位于第i行 和 第j列 . ...

  7. OpenCV之图像对比度、亮度值调整

    先上代码 #include <iostream> #include <opencv2/core.hpp> #include <opencv2/highgui.hpp> ...

  8. Opencv图像的亮度和对比度调整

    文章目录 前言 一.图像亮度和对比度的基本概念: 1.图像亮度: 2.图像对比度: 二.RGB三通道色彩空间的图像变换: 1.线性变换公式如下: 2.操作简介: 3.图像亮度调整: 4.图像对比度调整 ...

  9. opencv学习系列——图像对比度亮度调节

    实验2.1:对比度调整 设计一个Sigmoid函数,实现对图像的对比度调整(使用opencv窗口系统的slider控件,交互改变Sigmoid函数的参数,实现不同程度的对比度调整:) (1)线性函数调 ...

  10. opencv-图像对比度、亮度值调整

    // 描述:包含程序所依赖的头文件 //-------------------------------------------------------------------------------- ...

最新文章

  1. 系列篇|编写一个翻转事件极性的package
  2. 我的世界基岩版json_我的世界基岩版1.16
  3. 【Android OpenGL ES 开发 (二)】渲染管线与Shader
  4. leetcode 141 环形链表 C++
  5. thinkcmf ajax,thinkcmfx 中如何用jquery ajax提交数据,自己尝试去做之后,还是没法提交,求助!...
  6. 【Redis数据库】命令学习笔记——发布订阅、事务、脚本、连接等命令汇总
  7. STL 容器迭代器失效总结(超级详细)
  8. 恶意代码分析实战学习——静态分析
  9. 网络空间安全——2021软科中国大学专业排名
  10. 2019未来科学大奖周盛大开幕 百格活动倾情助力
  11. Unity中使用TimeSpane计算时差
  12. 【数仓】浅谈数仓建模的方法
  13. 想通过手机刷视频赚钱?这篇文章你有必要了解一下
  14. 安装程序无法继续因为计算机上安,Windows安装无法继续怎么办?Windows安装无法继续的解决方法...
  15. 基于51单片机ds1302时钟、ds18b20、lcd12864的恒温器
  16. 只有170字节,最小的64位Hello World程序这样写成
  17. 论文阅读——MISF:Multi-level Interactive Siamese Filtering for High-Fidelity Image Inpainting
  18. 微信好友头像无法显示的问题
  19. 教你用CSS从零做漂亮网页,这样学习前端太有成就感了
  20. php论文提答辩问题,论文答辩导师一般会问什么问题

热门文章

  1. axios 同时多个请求_Axios是什么?用在什么场景?如何使用?
  2. mysql sys cpu_MySQL SYS CPU高的案例分析(一)
  3. 关于mysql性能优化_关键的十个MySQL性能优化技巧
  4. python打包和添加数据文件_使用pyinstaller 2.1将python打包并添加版本信息和图标
  5. springboot+vue全栈开发_全栈的自我修养: 002使用@vue/cli进行vue环境搭建 (使用Vue,SpringBoot,Flask完成前后端分离)...
  6. c oracle案例,Oracle 19c CRS重启案例记录
  7. java发送qq邮件_「java发邮件」Java 通过SMTP实现发送QQ邮件 - seo实验室
  8. 擦拭法 java 泛型_廖雪峰Java4反射与泛型-3范型-4擦拭法
  9. js时间和时间戳之间如何转换(汇总)
  10. Postgresql、MySQL相关的四种索引类型:B-Tree,Hash,Gist,GIN