本实例演示简单地改变图像的对比度和亮度,使用了如下线性变换来实现像素值的遍历操作:

  

  The parameters α > 0 and β often called the gain and bias parameters;

  sometimes these parameters are said to control contrast and brightness respectively.

  代码如下:

// 改变图像的对比度和亮度
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std; double alpha; /** < Simple contrast control */
int beta; /** < Simple brightness control */ int main( int argc, char** argv )
{
/// 加载图像
Mat image = imread( "./Res/James Harden.jpg" );   /// 目标图像空间预分配
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) + beta
for( int y = ; y < image.rows; y++ )
{
for( int x = ; x < image.cols; x++ )
{
for( int c = ; c < ; c++ )
{
new_image.at<Vec3b>(y,x)[c] = saturate_cast<uchar>( alpha * (image.at<Vec3b>(y,x)[c] ) + beta );
}
}
}
/// 创建显示窗口
namedWindow("Original Image", );
namedWindow("New Image", ); /// 显示图像
imshow("Original Image", image);
imshow("New Image", new_image); /// 等待键盘事件
waitKey(); cin.get();
return ;
}

运行结果:

OpenCV学习:改变图像的对比度和亮度的更多相关文章

  1. OpenCV 改变图像的对比度和亮度

    #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <ios ...

  2. OpenCV --- 修改图像的对比度、亮度 、RGB转Gray图像、修改图像的尺寸

    #include <opencv2/core.hpp> #include <opencv2/imgcodecs.hpp> #include <opencv2/highgu ...

  3. opencv学习笔记-图像对比度、亮度调节

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

  4. opencv学习笔记-图像叠加、混合

    在图像处理中,目标区域定义为感兴趣区域ROI(region of Interest),这是后期图像处理的基础,在获取ROI后,进行一些列的处理.ROI区域在Opencv中就是Rect,先构建Rect, ...

  5. Python下的OpenCV学习 02 —— 图像的读取与保存

    OpenCV提供了众多对图片操作的函数,其中最基本的就是图片的读取与输出了. 一.读取图片 利用OpenCV读取一张图片是非常容易的,只需要用到 imread() 函数,打开shell或者cmd,进入 ...

  6. opencv学习笔记——图像缩放函数resize

    opencv提供了一种图像缩放函数 功能:实现对输入图像缩放到指定大小 函数原型: void cv::resize ( InputArray src, OutputArray dst, Size ds ...

  7. OpenCV学习(11) 图像的腐蚀与膨胀(2)

    先对一副灰度图像进行腐蚀操作,然后在腐蚀后的图像上再进行膨胀操作,我们定义这个操作为开操作. 先对一副图像进行膨胀操作,然后在膨胀后的图像上再进行腐蚀操作,我们定义这个操作为闭操作.       开操 ...

  8. OpenCV学习(10) 图像的腐蚀与膨胀(1)

    建议大家看看网络视频教程:http://www.opencvchina.com/thread-886-1-1.html    腐蚀与膨胀都是针对灰度图的形态学操作,比如下面的一副16*16的灰度图. ...

  9. opencv学习(一)——图像入门

    图像入门 一.读取图像 在opencv中使用cv.imread(filename, flags)函数读取图像.filename参数表示读取图像的路径.读取图像的路径应完整给出,且不能含有中文,否则在调 ...

随机推荐

  1. leetcode ---双指针+滑动窗体

    一:Minimum Size Subarray Sum(最小长度子数组的和O(N)) 题目: Given an array of n positive integers and a positive ...

  2. centos7重启网卡

    systemctl restart network

  3. CCTargetedAction

    改变动作执行对象CCTargetedAction 通常默认的动作执行对象是调用runAction的对象,而CCTargetedAction可以改变动作执行对象. CCTargetedAction* t ...

  4. angular学习笔记(十一)-表达式

    本篇只要介绍angular表达式: 在之前的例子中,我们多半是直接把数据作为angular标识符的值,但其实可以使用表达式来做更多的事情: 比如: {{number}} 也可以是: {{number+ ...

  5. 如何在Windows环境搭建Object C开发环境

    1. 安装编译环境 Object C和其他很多语言一样,都需要有一个编译器.Object C 是在GCC下编译的.GCC(GNU Compiler Collection,GNU编译器集合),是一套由 ...

  6. js异步加载的解决方案

    默认情况javascript是同步加载的,javascript的加载时阻塞的,后面的元素要等待javascript加载完毕后才能进行再加载,如何解决这个问题呢,接下来将为你详细介绍下异步加载js三种实 ...

  7. LeetCode: Substring with Concatenation of All Words 解题报告

    Substring with Concatenation of All Words You are given a string, S, and a list of words, L, that ar ...

  8. logback日志模板与详解

    <pattern>的转换符说明: (这部分引用自http://aub.iteye.com/blog/1103685)转换符 作用 c {length } lo {length } logg ...

  9. VC6.0启动File-open和Project-add file to project崩溃的解决方法

    最近由于装了Office2010,VC6.0被整残了,file->open 和 Project->add file to project不能用,一用VC6.0就崩溃,查到是由于office ...

  10. linux网口驱动实现(待续)

    驱动位于linux/driver/net下. 1. 寄存器读写 asm/io.h #define __raw_writeb(v,a)   (__chk_io_ptr(a), *(volatile un ...