OpenCV 更改对比度和亮度的简单方法

原创 2018年04月17日 11:38:04

dst(i, j) = α · src(i, j) + β

α and β in the above formula affects respectively contrast and brightness


#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>


using namespace std;
using namespace cv;


int main() {
    Mat src1, src2, gray_src, dst;
    src1 = imread("/Users/apple/Desktop/test.jpg", IMREAD_COLOR);
    //src2 = imread("/Users/apple/Desktop/test2.jpg", IMREAD_COLOR);
    if (src1.empty()) { // if (!src.data())
        cout << "could not load image..." << endl;
        return -1;
    }
    
    // 单通道情况
    // cvtColor(src1, src1, CV_BGR2GRAY);
    
    string input = "input image";
    namedWindow(input, CV_WINDOW_AUTOSIZE);
    imshow(input, src1);
    
    
    // contrast and brightness changes
    int height = src1.rows;
    int width = src1.cols;
    dst = Mat::zeros(height, width, src1.type());
    float alpha = 1.2; // 对比度
    float beta = 30; // 亮度
    
    /*
     若使用
     src.convertTo(m1, CV_32F);
     则在下面遍历的过程中不使用Vec3b,而是Vec3f。
     */
     
    
    for (int row = 0; row < height; row++) {
        for (int col = 0; col < width; col++) {
            if (src1.channels() == 3) {
                int b = src1.at<Vec3b>(row, col)[0]; // blue
                int g = src1.at<Vec3b>(row, col)[1]; // green
                int r = src1.at<Vec3b>(row, col)[2]; // red
                
                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 (src1.channels() == 1) {
                int v = src1.at<uchar>(row, col);
                dst.at<uchar>(row, col) = saturate_cast<uchar>(v * alpha + beta);
            }
        }
    }
    
    imshow("output", dst);
    
    waitKey(0);
    
    return 0;
}


opencv调整图像亮度和对比度

opencv调整图像亮度和对比度
  • alickr
  • alickr
  • 2016-05-28 00:03:43
  • 2250

【opencv】 改变图像的对比度和亮度的两种方法

方法一:对每个像素点进行线性处理 两种常用的点过程(即点算子),是用常数对点进行乘法和加法运算:                                                  ...
  • weixin_36340947
  • weixin_36340947
  • 2017-09-22 18:13:10
  • 997

OpenCV自带例子(四)改变一张图片的对比度与亮度

对于第i行第j个像素 g(i,j) = alpha * f(i,j) + beta alpha 对应着对比度 beta 对应着亮度 #include #include #inc...
  • merlin_q
  • merlin_q
  • 2011-11-26 19:30:19
  • 7838

opencv关于对比度和亮度的误解

Tip1 对比度与亮度的实际
  • abc20002929
  • abc20002929
  • 2014-10-26 10:35:57
  • 5038

opencv(c++)改变图像的对比度和亮度

参考: 1、https://docs.opencv.org/3.2.0/ 2、https://github.com/opencv/opencv/Changing the contrast and ...
  • wc781708249
  • wc781708249
  • 2017-11-05 11:13:57
  • 517

opencv学习(十)之调节图像亮度和对比度

在图像处理中,图像像素的值依赖于输入图像的值。可以通过对输入像素值进行数值运算已达到对图像处理的目的。以调节图像对比度和亮度为例,通过结合之前学过的图像像素访问和轨迹条等内容,对图像对比度和亮度进行调...
  • keith_bb
  • keith_bb
  • 2016-11-21 21:28:05
  • 2615

学习OpenCV范例(五)——改变图像的对比度和亮度

学习到范例五的时候,发觉虽然范例都很简单,但是做记录的时候,并且把程序里面使用过的类或方法都弄明白,也就不简单了,接下来介绍一下范例五吧。 1、图像处理 一般来说,图像处理算子是带有一幅或多幅输入...
  • chenjiazhou12
  • chenjiazhou12
  • 2014-03-12 23:01:39
  • 2857

opencv:图像对比度、亮度值调整(理论基础)

一般的图像处理算子都是一个函数,它接受一个或多个输入图像,并产生输出图像。算子的一般形式如下: g(x)=h(f(x))或者g(x)=h(f0(x)……fn(x)) 图像亮度和对比度的调整...
  • qq_31935691
  • qq_31935691
  • 2017-05-11 23:43:28
  • 727

opencv学习笔记之调整图像的亮度与对比度

图像的亮度与对比度调整 // Change_the_brghtied_img.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #inclu...
  • what_lei
  • what_lei
  • 2017-01-22 13:11:12
  • 1794

python实现opencv学习八:粗略的调整图片对比度和亮度

基本原理:两张图片合成。    先按照原来的图片的格式新建一个色素全为零的图片,然后按照两张图的比例不同合成一张新图片。主要用到函数:addWeighted函数# -*- coding=GBK -*-...
  • u011321546
  • u011321546
  • 2018-03-15 10:36:33
  • 267
收藏助手
不良信息举报
您举报文章:OpenCV 更改对比度和亮度的简单方法
举报原因:
原因补充:

(最多只允许输入30个字)