1.理论基础

两个参数  和  一般称作 增益 和 偏置 参数。我们往往用这两个参数来分别控制 对比度 和 亮度 。

你可以把  看成源图像像素,把  看成输出图像像素。这样一来,上面的式子就能写得更清楚些:

其中,  和  表示像素位于 第i行 和 第j列 。

其中,α可以调整图像的对比度,β可以调整图像的亮度。

2.代码如下:

 #include<iostream>
#include<opencv2/opencv.hpp> using namespace std;
using namespace cv; int main(int argc, char **argv)
{
Mat src = imread("D:/meinv.jpg");
if (!src.data)
{
printf("Couldn't load the image......");
return -;
}
namedWindow("源图像", CV_WINDOW_AUTOSIZE);
imshow("源图像", src); int height = src.rows;
int width = src.cols;
int channels = src.channels(); Mat dst = Mat::zeros(src.size(),src.type()); //创建一个和原图像大小相同,类型相同,像素值为0的图像。
float alpha = 1.5; //设置参数
float beta = ; //对每个像素点的操作
for (int i = ; i < height; i++)
{
for (int j = ; j < width; j++)
{
if (channels == ) //如果是彩色图像
{
dst.at<Vec3b>(i, j)[] = saturate_cast<uchar>(alpha*(src.at<Vec3b>(i, j)[]) + beta);
dst.at<Vec3b>(i, j)[] = saturate_cast<uchar>(alpha*(src.at<Vec3b>(i, j)[]) + beta);
dst.at<Vec3b>(i, j)[] = saturate_cast<uchar>(alpha*(src.at<Vec3b>(i, j)[]) + beta);
}
else if (channels == ) //灰度图像
{
dst.at<uchar>(i,j) = saturate_cast<uchar>(alpha*(src.at<uchar>(i, j)) + beta); }
}
}
imshow("dst_image", dst);
waitKey();
return ; }

3.显示效果:

(1)原图:

(2)修改后的图像:

还可以改变β的值 观察显示效果

调整图像的亮度和对比度—opencv的更多相关文章

  1. Opencv学习笔记4:Opencv处理调整图片亮度和对比度

    一.理论基础 在数学中我们学过线性理论,在图像亮度和对比度调节中同样适用,看下面这个公式: 在图像像素中其中: 参数f(x)表示源图像像素. 参数g(x) 表示输出图像像素. 参数a(需要满足a> ...

  2. Python-OpenCV——亮度和对比度

    亮度与对比度 亮度调整是将图像像素的强度整体变大/变小,对比度调整指的是图像暗处变得更暗,亮出变得更亮,从而拓宽某个区域内的显示精度. OpenCV中亮度和对比度应用这个公式来计算:g(x) = αf ...

  3. C#中如何调整图像大小

    在本篇文章中,我将介绍如何在C#中来调整你想要的图像大小.要实现这一目标,我们可以采取以下几个步骤: 1.首先要获取你想要调整大小的图像: string path = Server.MapPath(& ...

  4. [译]Android调整图像大小的一些方法

    翻译自 某大神在Stack Overflow里的自问自答 (一般我们将Bitmap翻译为位图,但为了更好理解,在本文中我将它翻译成图像): 我们在开发的时候,经常需要从服务器中加载图像到客户端中,但有 ...

  5. glsl计算sprite的亮度饱和度对比度

    //glsl计算sprite的亮度饱和度对比度 #ifdef GL_ES precision mediump float; #endif uniform sampler2D u_texture; va ...

  6. (opencv08)cv.resize()调整图像大小

    (opencv08)cv.resize()调整图像大小 img = cv2.resize(src, dsize, dst=None, fx=None, fy=None, interpolation=N ...

  7. 如何在 HTML 中调整图像大小?

    了解在 HTML 中调整图像大小的不同技术.何时应避免在浏览器端调整大小,以及在 Web 上操作和提供图像的正确方法. 如果您的图像不适合布局,您可以在 HTML 中调整其大小.在 HTML 中调整图 ...

  8. [ActionScript 3.0] 亮度、对比度、饱和度、色相的调整

    import fl.motion.ColorMatrix; import flash.filters.ColorMatrixFilter; //**调整亮度**// var ld_Matrix:Col ...

  9. opencv:通过滑动条调节亮度和对比度

    示例代码: #include <opencv.hpp> using namespace cv; using namespace std; void on_change(int, void* ...

随机推荐

  1. Android基础Activity篇——Menu

    1.创建一个menu 在res目录右击-->new-->Drirectory,创建menu,然后右击menu-->new-->Menu resource file 创建main ...

  2. HTML5 笔记之 HTML5 的常见用法介绍

    阅读目录 介绍 网页标题.文章标题.文章段落 介绍 字体大小.字体颜色.字体类型.字体位置.背景颜色 介绍 插入图片 介绍 网页内的超链接.网页间的超链接 介绍 有序列表.无序列表 介绍 表格制作 介 ...

  3. Java—多态

    多态——对象的多种形态(继承是多态实现的基础) 引用多态:父类的引用可以指向本类的对象:父类的引用可以指向子类的对象 方法多态:创建本类对象时,调用的方法为本类方法:创建子类对象时,调用的方法为子类重 ...

  4. 怎样解决putty终端乱码的方法

    原文地址:https://jingyan.baidu.com/article/3aed632e5f00ae701080913a.html?qq-pf-to=pcqq.c2c 终端输入:echo $LA ...

  5. Mysql学习第四天

    1.跟用户相关的命令 (了解). DCL语句    1.1. 创建一个新的用户        CREATE USER 用户名@地址 IDENTIFIED BY '密码';        CREATE ...

  6. JavaScript Date对象方法详细总结

    Date 对象方法 方法 描述 Date() 返回当日的日期和时间. getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31). getDay() 从 Date 对象返回一周中的某 ...

  7. 常用mysql系统参数参考

    http://aaronsa.blog.51cto.com/5157083/1741481

  8. jemter实战

    业务流梳理,需要实现的内容,含jdbc和正则表达式,和取值 1. 登录用户 2. 获取一个未分配的订单,判断是否是未分配 3. 获取配货单号 4. 分配配货单 5. 查询已分配的配货单 6. 查询包裹 ...

  9. 【转】DataURL在Web浏览器中的兼容性总结

    IE8+,Firefox,Chrome,Opera,Safari 等现代浏览器普遍支持data URL IE8 data URL 最大长度限制为32k字节,超出无效.IE9+没有这个限制 IE只识别b ...

  10. office2010激活

    软件下载链接: http://yunpan.cn/cySGrE99u6uv3 (提取码:c612) 下面是操作演示,我录制成gif文件了,下载下来用浏览器打开 360网盘:http://yunpan. ...