OpenCV C++ 图像对比度和亮度
目录
知识点
亮度和对比度调整原理
示例代码
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++ 图像对比度和亮度相关推荐
- OpenCV之图像对比度、亮度值调整
先上代码 #include <iostream> #include <opencv2/core.hpp> #include <opencv2/highgui.hpp> ...
- opencv计算图像亮度调节_OpenCV教程创建Trackbar图像对比度、亮度值调整
这篇文章中我们一起学习了如何在OpenCV中用createTrackbar函数创建和使用轨迹条,以及图像对比度.亮度值的动态调整. 文章首先详细讲解了OpenCV2.0中的新版创建轨迹条的函数crea ...
- 【图像处理】OpenCV系列五 --- 图像对比度、亮度值调整
今天呢,我们一起学习一下,如何调整图像的对比度以及亮度. 一.原理 调整图像亮度与对比度所用的公式 g(i,j) = a * f(i,j) + b 其中,i 和 j 表示像素位于第i行 和 第j列 . ...
- 【OpenCV】OpenCV实战从入门到精通之 -- 图像对比度、亮度值调整
理论依据 首先了解一下算子的概念.一般的图像处理算子都是一个函数,它接受一个或多个输入图像,并产生输出图像.下面是算子的一般形式: 或者 图像亮度和对比度的次奥做属于图像变换中比较简单的点操作(poi ...
- 《OpenCV3编程入门》学习笔记5 Core组件进阶(四)图像对比度、亮度值调整
第5章 Core组件进阶 5.4 图像对比度.亮度值调整 5.4.1 理论依据 1.算子:一般图像处理算子都是一个函数,接受一个或多个输入图像,并产生输出图像 2.算子一般形式: 3.点操作(poin ...
- 提升图像对比度和亮度
目录 一 提升图像对比度和亮度 二 代码实现 三 实现效果 注:原创不易,转载请务必注明原作者和出处,感谢支持! 一 提升图像对比度和亮度 一般来说图像的变换可以分成以下两类: (1)像素变换 在像素 ...
- OpenCV之图像对比度与亮度调整(C++实现)
图像对比度和亮度的调整,属于图像处理中的点操作,其有一个特点:仅仅根据输入像素的值,来计算相应的输出像素值.这列蒜子包括亮度和对比度调整.颜色校正和变换. 最常用的点操作是乘以一个常数,再加上一个常数 ...
- Python+OpenCV:图像对比度受限自适应直方图均衡化(CLAHE, Contrast Limited Adaptive Histogram Equalization)
Python+OpenCV:图像对比度受限自适应直方图均衡化(CLAHE, Contrast Limited Adaptive Histogram Equalization) ############ ...
- python3-opencv库(4)--图片像素运算,利用加权叠加调节图像对比度和亮度
版权声明:转载请注明原作者及出处 本文所涉及的一切图像像素运算,前提都是两张图尺寸相同,通道数相同 import numpy as np from cv2 import cv2"" ...
最新文章
- OpenCV-Python Feature2D 特征点检测 (SIFT,SURF)
- Dataset之UT Zappos50K:UT Zappos50K数据集的简介、安装、使用方法之详细攻略
- SpringMVC的请求-文件上传-客户端表单实现
- php log 行号 debug_backtrace,PHP debug_backtrace() 函数生成 backtrace(回溯跟踪)
- mongodb 导出一条数据_将 MongoDB 导出成 csv
- java_if_else__的应用1
- OpenLayers 绘制,选中,鼠标悬浮
- 【前端面试题】02—59道CSS面试题(附答案)
- STM STC NXP单片机 按键扫描
- python实现三阶魔方还原
- 张磊:什么才是企业真正的护城河
- PAT-2021年春季乙级考试题解
- 703. 数据流中的第K大元素
- 数据库(Mysql)的事物详解
- MySQL主从——GTID主从
- IC授权卡和复制卡的区别_北京居住证跟居住卡的区别
- 20220319编译OpenHarmony-v3.1-beta出错的解决方法
- 第十七周-day72-Python编程基础day04
- 2017年网络流行语TOP20 , 没用过算我输!
- 汽车内外饰设计工程师是做什么的?有无发展前景-予菲汽车学习营分享
热门文章
- python的pygame模块详解_python游戏模块学习之pygame常规操作讲解
- 谱聚类算法及其代码(Spectral Clustering)
- 【VTK+增材CAM】3D打印模型切片
- QSetting的简单用法
- java代餐计算器_java入门7 - 千言sully的个人空间 - OSCHINA - 中文开源技术交流社区...
- 统计学 箱线图、离差平方和、方差、标准差和变异系数
- Java初中级框架面试题
- 学校拟增建五个计算机实验室,里水将启动新一轮学校扩建升级项目 今年拟新增学位7200个...
- 火与思想之魂,一位俄罗斯女数学家的追梦人生
- 网页标签对网站排名的影响