OpenCV学习笔记(三):图像对比度、亮度调整源码
OpenCV学习笔记(三):图像对比度、亮度调整源码
主函数:
#include <opencv2/opencv.hpp>using namespace cv;using namespace std;int g_nContrastValue=80; //对比度值int g_nBrightValue=80; //亮度值Mat g_srcImage, g_dstImage;int main(int argc, char *argv[]){QCoreApplication a(argc, argv);// 1、读入用户提供的图像g_srcImage = imread("F:/C++/2. OPENCV 3.1.0/TEST/1.jpg");if (!g_srcImage.data){printf("读取g_srcImage图片错误~! \n"); return false;}// 2、显示源图imshow("【原始图窗口】", g_srcImage);// 3、快速地形成一个填满0的目标常量矩阵,// 4、创建窗口// 5、创建轨迹条// 6、调用回调函数g_dstImage = Mat::zeros(g_srcImage.size(), g_srcImage.type());namedWindow("【效果图窗口】", 1);createTrackbar("对比度:", "【效果图窗口】", &g_nContrastValue, 300, ContrastAndBright);createTrackbar("亮 度:", "【效果图窗口】", &g_nBrightValue, 200, ContrastAndBright);ContrastAndBright(g_nContrastValue, 0);ContrastAndBright(g_nBrightValue, 0);//输出一些帮助信息//按下“q”键时,程序退出cout << endl << "\t运行成功,请调整滚动条观察图像效果\n\n"<< "\t按下“q”键时,程序退出\n";while (char(waitKey(1)) != 'q') {}return a.exec();}
回调函数
static void ContrastAndBright(int, void *){// 遍历每个像素的每个通道// 三个for循环,执行运算 g_dstImage(i,j) = a*g_srcImage(i,j) + b// saturate_cast: 模板函数,用途溢出保护// 从一种原始类型到另一种原始类型的高效而准确的转换// 饱和在名称中意味着当输入值v超出目标类型的范围时,结果不是只通过获取较低的输入位来形成的,而是通过剪切值来形成的。for (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_dstImage);}
OpenCV学习笔记(三):图像对比度、亮度调整源码相关推荐
- C++下opencv学习笔记(一)(图像的简单读取丶显示与存储)
C++下opencv学习笔记(一)(图像的简单读取丶显示与存储) 前言 学习C++ OpenCV,第一需要具备面向对象语言的基础,第二要对图像处理机器学习有基础了解,容易入门.觉得自己基础已经有了可以 ...
- Opencv学习笔记(三) -- 图像压缩与保存
1.图像压缩 1.1常用图像格式 bmp Windows位图格式.该格式为不压缩格式,缺点是图像文件较大. jpg JPEG是为静态图像所建立的第一个国际数字图像压缩标准,也是至今一直在使用的.应用最 ...
- OpenCV学习笔记(九)——图像轮廓(下)
<OpenCV轻松入门:面向Python>学习笔记(九) 1-3 查找并绘制轮廓.矩特性及Hu矩 4-5 轮廓拟合及凸包 6. 利用形状场景算法比较轮廓 6.1 计算形状场景距离 6.2 ...
- Opencv学习笔记(八) -- 图像色彩空间转换
1.常见图像色彩空间 RGB RGB色彩模式是工业界的一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红.绿.蓝三个通道 ...
- Ui学习笔记---EasyUI的EasyLoader组件源码分析
Ui学习笔记---EasyUI的EasyLoader组件源码分析 技术qq交流群:JavaDream:251572072 1.问题1:为什么只使用了dialog却加载了那么多的js http: ...
- Netty网络框架学习笔记-16(心跳(heartbeat)服务源码分析)
Netty网络框架学习笔记-16(心跳(heartbeat)服务源码分析_2020.06.25) 前言: Netty 作为一个网络框架,提供了诸多功能,比如编码解码等,Netty 还提供了非常重要的一 ...
- Qt学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4)...
Qt学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4) 今天再次分析了Eva的源码,也看 ...
- [OpenCV学习笔记3][图像的加载+修改+显示+保存]
正式进入OpenCV学习了,前面开始的都是一些环境搭建和准备工作,对一些数据结构的认识主要是Mat类的认识: [1.学习目标] 图像的加载:imread() 图像的修改:cvtColor() 图像的显 ...
- OpenCV学习笔记(七)——图像梯度及边缘检测
图像梯度计算的是图像变化的速度.对于图像的边缘部分,其灰度值变化较大,梯度值也较大:相反,对于图像中比较平滑的部分,其灰度值变化较小,相应的梯度值也较小.一般情况下,图像梯度计算的是图像的边缘信息. ...
- OpenCV学习笔记之图像融合
一.线性融合操作 线性混合操作 也是一种典型的二元(两个输入)的 像素操作 : 通过在范围 内改变 ,这个操可以用来对两幅图像或两段视频产生时间上的 画面叠化 (cross-dissolve)效果 ...
最新文章
- 老生常谈:文字常量区的那点事
- 虚拟机创建静默快照报错:msg.snapshot.error-QUIESCINGERROR
- 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-目录
- 信道分配 以太网
- js常用内建对象之:Array
- Matlab晶闸管单相全桥电路仿真
- 惠普电脑怎么用access_惠普笔记本电脑怎么分区
- 126邮箱绑定QQ邮箱并微信提醒
- 知识图谱方向顶会小记
- linux使用cmake交叉编译arm32程序
- k8s使用的iptables,具体原理是什么?一学就会
- 程序员是如何开灯的 白话闲聊mqtt协议
- .NET/C# 生成二维码
- 教你怎么把视频转换成gif动图
- 关于BERT预训练模型,你想知道的都在这~
- Mp3Player VS Diskman(1)
- 黑马程序员--JavaJAVA 正则表达式 (超详细)
- 放弃文华财经,自己编程实现期货程序化交易
- 英文RouterOS秒变中文版
- 自动打开国航APP并签到