OpenCV入门:(五:更改图片对比度和亮度)

1. 理论

图片的转换就是将图片中的每个像素点经过一定的变换,得到新像素点,新像素点组合成一张新的图片。

改变图片对比度和亮度的变换如下:

其中α和β被称作增益参数(gain parameter)和偏差参数(bias parameter),分别控制对比度和亮度。

2. 实现代码

使用上述公式实现改变对比度和亮度的代码如下:

void ContrastAndBrightness(const Mat& Src,Mat& Dst,double alpha,double beta)
{
    Dst = Mat::zeros(Src.size(),Src.type());
    for (int y = 0; y < Src.rows; y++)
    {
        for (int x = 0; x < Src.cols; x++)
        {
            for (int c = 0; c < 3; c++)
            {
                Dst.at<Vec3b>(y,x)[c] = saturate_cast<uchar>(alpha * (Src.at<Vec3b>(y,x)[c]) + beta);
            }
        }
    }
    namedWindow("Src Image");
    namedWindow("Dst Image");

    imshow("Src Image",Src);
    imshow("Dst Image",Dst);

    waitKey();
}

使用OpenCV自带函数处理如下:

Src.convertTo(Dst, -1, 2.2, 20);

3. 处理结果

以下分别是alpha设置为1.5,beta设置为30时两种情况的处理结果,处理结果相差不多,但是使用时尽量调用OpenCV提供的函数。

4. 结束

时间: 2024-12-22 07:35:40

OpenCV入门:(五:更改图片对比度和亮度)的相关文章

Opencv 入门学习之图片人脸识别

读入图片,算法检测,画出矩形框 import cv2 from PIL import Image,ImageDraw import os def detectFaces(image_name): img = cv2.imread(image_name) face_cascade = cv2.CascadeClassifier('../opencv-2.4.9/data/haarcascades/haarcascade_frontalface_default.xml') if img.ndim==

【OpenCV入门教程之六】 创建Trackbar &amp; 图像对比度、亮度值调整(转)

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/21479533 作者:毛星云(浅墨)    邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本: 2.4.8 这篇文章中我们一起学习了如何在OpenCV中用createTrackbar函数创建和使用轨迹条,以及图像对比度.亮度值的动态调整. 文章首先详细讲解了OpenCV2.0中的新版创建轨迹条的函数c

opencv ,亮度调整【【OpenCV入门教程之六】 创建Trackbar &amp; 图像对比度、亮度值调整

http://blog.csdn.net/poem_qianmo/article/details/21479533 [OpenCV入门教程之六] 创建Trackbar & 图像对比度.亮度值调整 标签: opencvvs2010c++图像处理 2014-03-18 21:43 43189人阅读 评论(99) 收藏 举报  分类: [OpenCV](18)  目录(?)[+] 本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qian

【opencv入门之四】Trackbar、图像对比度、亮度值调整

参考网站: http://blog.csdn.net/poem_qianmo/article/details/21479533 1.轨迹条(Trackbar) createTrackbar函数(创建轨迹条) 注意:它会和一个回调函数配合使用 C++: int createTrackbar(conststring& trackbarname, conststring& winname, int* value, int count, TrackbarCallback onChange=0, v

【OpenCV入门教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 知乎:http://www.zhihu.com/people/mao-xing-yun 邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本: 2.4.9 这篇文章里,我们将一起探讨图像金字塔的一

OpenCV(5) 对比度和亮度

? 公式: 两个参数 \alpha > 0 和 \beta 一般称作 增益 和 偏置 参数.我们往往用这两个参数来分别控制 对比度 和 亮度 . ? #include "stdafx.h" #include<iostream> #include<thread> #include<vector> #include <opencv2/core/core.hpp> #include <opencv2/contrib/contrib.

OpenCV入门 - 调整图片尺寸

OpenCV入门 - 调整图片尺寸(image resize) 通过Mat::size()方法得到关于图像大小的Size实例,通过resize方法调整图像大小.代码如下: #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/nonfree/features2d.hpp> // #include <opencv2/imgproc/imgpr

OpenCV 入门教程 之环境配置 + 图片匹配 matchTemplate

1.什么是OpenCV OpenCV的全称是:Open Source Computer Vision Library.OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和Mac OS操作系统上.它轻量级而且高效--由一系列 C 函数和少量 C++ 类构成. 总结特点: 1.开源, 商业用途也不必公开自己的源代码或者改善后的代码. 2.效率高,简单的图像处理就算了,涉及到复杂的处理一般的类库无法满足比如CXImage 3.有巨头维护(Intel) 有这三个

opencv之对比度和亮度的调节

opencv之对比度和亮度的调节 公式 \[ g(x) = a*f(x) + b\] 注:\(f(x)\) 为输入图像, \(g(x)\) 为输出图像. 注:\(a\)为增益,用于控制图像的对比度: \(b\)为偏置,用于控制图像的亮度. 代码 for (int y = 0; y < image.rows; ++y) { for (int x = 0; x < image.cols; ++x) { for (int c = 0; c < image.channel; ++c) { new