OpenCV学习7--调整图像亮度和对比度

在opencv\sources\samples下面提供了很多的官方例程,是学习OpenCV的最好的资源。

理论:
图像变换可以看做如下:
像素变换–点操作
邻域变换–区域操作

其中图像亮度和对比度属于像素变换–点操作

image.png

α是对比度调节参数,

β是调节亮度。


一些主要API:

Mat new_image = Mat::zeros(image.size(),image.type()); //创建一个空白图像

saturate_cast< uchar>(value)确保值大小范围是0~255之间

Mat.at< Vec3b>(y,x)[index]=value //给每个像素点的每个通道赋值


代码参考:

#include<iostream>
#include<opencv2/core/core.hpp>
#include<highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>  
#include <math.h>

using namespace cv;
using namespace std;

int main()
{
    Mat src,dst; 
    src = imread("1.jpg");  

    char input_win[] = "input image";

    namedWindow(input_win,CV_WINDOW_AUTOSIZE);
    imshow(input_win,src);

    int height = src.rows;
    int width = src.cols;

    double alpha = 5.2;   //对比度参数
    double beta = 30;     //亮度参数
    //src.convertTo(m1,CV_64F);
    dst = Mat::zeros(src.size(),src.type());
    for(int row = 0;row <height;row++){
        for(int col = 0;col < width;col++){
            if(src.channels() == 3){                  //三通道数据
                float b = src.at<Vec3b>(row,col)[0];  //第一个通道是blue,第二个是green,第三个是red,每个像素是3个uchar类型的向量
                float g = src.at<Vec3b>(row,col)[1];
                float r = src.at<Vec3b>(row,col)[2];

                dst.at<Vec3b>(row,col)[0] = saturate_cast<uchar>(b*alpha+beta);   //限定范围大小
                dst.at<Vec3b>(row,col)[1] = saturate_cast<uchar>(g*alpha+beta);
                dst.at<Vec3b>(row,col)[2] = saturate_cast<uchar>(r*alpha+beta);
            }
            else if(src.channels() == 1){
                float v = src.at<uchar>(row,col);
                dst.at<uchar>(row,col) = saturate_cast<uchar>(v*alpha+beta); 
            }
        }
    }
    char output_title[] = "contrast and brightness change demo";
    namedWindow(output_title,CV_WINDOW_AUTOSIZE);
    imshow(output_title,dst);

    waitKey(0);
    return 0;
}

效果展示:

image.png

源码和原图片请到Github下载:
 https://github.com/MRwangmaomao/OpencvBrightnessTest-Project.git



————————————————

版权声明:本文为CSDN博主「南山二毛」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_16481211/article/details/79564909


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864