目录

知识点

亮度和对比度调整原理

示例代码

reference


知识点

在本文中将了解到以下几个方面的内容:

1、C++ OpenCV访问像素值;2、用0初始化矩阵;3、saturate_cast起的作用;4、简单的亮度()与对比度()调整方法

亮度和对比度调整原理

常用的点过程(即点算子),是用常数对点进行乘法和加法运算:

          式(1)

看成源图像像素,把看成输出图像像素,则式(1)可以写成:

       式(2)

其中,表示像素位于第行和第列;其中>0和一般称作增益和偏置参数。我们往往用这两个参数来分别控制对比度和亮度。

对比度提高对比度就是扩大两图像像素的差值,增大alpha。提高对比度就是增大差值,大的越大,小的越小。对比度系数alpha,小于1变暗,大于1变亮。

亮度增益变量就是在前面基础上再加多少,亮度表示0-255之间的像素值大小,越亮越向白的靠拢,像素值就该越大,整体要提高亮度就要扩大增益变量beta;

示例代码

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>using namespace std;
using namespace cv;double alpha; /**< 控制对比度 */
int beta;  /**< 控制亮度 */int main( int argc, char** argv )
{/// 读入用户提供的图像Mat image = imread( argv[1] );Mat new_image = Mat::zeros( image.size(), image.type() );/// 初始化cout << " Basic Linear Transforms " << endl;cout << "-------------------------" << endl;cout << "* Enter the alpha value [1.0-3.0]: ";cin >> alpha;cout << "* Enter the beta value [0-100]: ";cin >> beta;/// 执行运算 new_image(i,j) = alpha*image(i,j) + betafor( int y = 0; y < image.rows; y++ ){for( int x = 0; x < image.cols; x++ ){for( int c = 0; c < 3; c++ ){new_image.at<Vec3b>(y,x)[c] = saturate_cast<uchar>( alpha*( image.at<Vec3b>(y,x)[c] ) + beta );}}}/// 创建窗口namedWindow("Original Image", 1);namedWindow("New Image", 1);/// 显示图像imshow("Original Image", image);imshow("New Image", new_image);/// 等待用户按键waitKey();return 0;
}

在访问图像的每一个像素时,需要对RGB图像进行运算,因此需要注意一下两点:

  • 为了访问图像的每一个像素,使用这一语法: image.at<Vec3b>(y,x)[c] 其中, y 是像素所在的行, x 是像素所在的列, c 是R、G、B(0、1、2)之一。
  • 因为 的运算结果可能超出像素取值范围,还可能是非整数(如果是浮点数的话),所以要用 saturate_cast 对结果进行转换,以确保它为有效值。saturate_cast简单理解,就是确保RGB图像的像素值在0-255之间,saturate_cast(-10),返回0,saturate_cast(30 0),返回255,saturate_cast(133),返回133。

当然也可以不采用for循环来访问每个元素,而是直接采用下面这个命令:

image.convertTo(new_image, -1, alpha, beta);

注:运行代码时,取参数=2.2,=50

效果图:

reference

改变图像的对比度和亮度 — OpenCV 2.3.2 documentation

core 模块. 核心功能 — OpenCV 2.3.2 documentation

OpenCV对比度与亮度调整 - 知乎

OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)

【OpenCV】图像增强---灰度变换、直方图均衡化

8、OpenCV调整图像对比度和亮度_phinoo的博客-CSDN博客_opencv 亮度

注明:本文主要用来记录图像处理一些小的知识点,方便自己使用查阅,如有侵权联系删!

OpenCV C++ 图像对比度和亮度相关推荐

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

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

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

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

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

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

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

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

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

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

  6. 提升图像对比度和亮度

    目录 一 提升图像对比度和亮度 二 代码实现 三 实现效果 注:原创不易,转载请务必注明原作者和出处,感谢支持! 一 提升图像对比度和亮度 一般来说图像的变换可以分成以下两类: (1)像素变换 在像素 ...

  7. OpenCV之图像对比度与亮度调整(C++实现)

    图像对比度和亮度的调整,属于图像处理中的点操作,其有一个特点:仅仅根据输入像素的值,来计算相应的输出像素值.这列蒜子包括亮度和对比度调整.颜色校正和变换. 最常用的点操作是乘以一个常数,再加上一个常数 ...

  8. Python+OpenCV:图像对比度受限自适应直方图均衡化(CLAHE, Contrast Limited Adaptive Histogram Equalization)

    Python+OpenCV:图像对比度受限自适应直方图均衡化(CLAHE, Contrast Limited Adaptive Histogram Equalization) ############ ...

  9. python3-opencv库(4)--图片像素运算,利用加权叠加调节图像对比度和亮度

    版权声明:转载请注明原作者及出处 本文所涉及的一切图像像素运算,前提都是两张图尺寸相同,通道数相同 import numpy as np from cv2 import cv2"" ...

最新文章

  1. OpenCV-Python Feature2D 特征点检测 (SIFT,SURF)
  2. Dataset之UT Zappos50K:UT Zappos50K数据集的简介、安装、使用方法之详细攻略
  3. SpringMVC的请求-文件上传-客户端表单实现
  4. php log 行号 debug_backtrace,PHP debug_backtrace() 函数生成 backtrace(回溯跟踪)
  5. mongodb 导出一条数据_将 MongoDB 导出成 csv
  6. java_if_else__的应用1
  7. OpenLayers 绘制,选中,鼠标悬浮
  8. 【前端面试题】02—59道CSS面试题(附答案)
  9. STM STC NXP单片机 按键扫描
  10. python实现三阶魔方还原
  11. 张磊:什么才是企业真正的护城河
  12. PAT-2021年春季乙级考试题解
  13. 703. 数据流中的第K大元素
  14. 数据库(Mysql)的事物详解
  15. MySQL主从——GTID主从
  16. IC授权卡和复制卡的区别_北京居住证跟居住卡的区别
  17. 20220319编译OpenHarmony-v3.1-beta出错的解决方法
  18. 第十七周-day72-Python编程基础day04
  19. 2017年网络流行语TOP20 , 没用过算我输!
  20. 汽车内外饰设计工程师是做什么的?有无发展前景-予菲汽车学习营分享

热门文章

  1. python的pygame模块详解_python游戏模块学习之pygame常规操作讲解
  2. 谱聚类算法及其代码(Spectral Clustering)
  3. 【VTK+增材CAM】3D打印模型切片
  4. QSetting的简单用法
  5. java代餐计算器_java入门7 - 千言sully的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. 统计学 箱线图、离差平方和、方差、标准差和变异系数
  7. Java初中级框架面试题
  8. 学校拟增建五个计算机实验室,里水将启动新一轮学校扩建升级项目 今年拟新增学位7200个...
  9. 火与思想之魂,一位俄罗斯女数学家的追梦人生
  10. 网页标签对网站排名的影响