关闭

opencv实现滑动条控制图片的对比度和亮度变换

标签: opencvcreateTracker
300人阅读 评论(0) 收藏 举报
分类:

一般的图像处理算子都是一个函数,它接受一个或多个输入图像,并产生输出图像。


图像亮度和对比度的调整操作,其实属于图像处理变换中比较简单的一种——点操作。点操作有一个特点,仅仅根据输入像素值(有时可加上某些全局信息或参数),来计算相应的输出像素值。这类算子包括亮度(brightness)和对比度(contrast)调整,以及颜色校正(colorcorrection)和变换(transformations)。最简单的式子表示图像的对比度和亮度变换可表示如下:


参数:

1.f(x)表示原图像,既输入图像;g(x)表示变换输出的图像。

2.a可用来控制图像f(x)对比度。

3.b可用来控制图像f(x)亮度

实现以上操作需要设计图像像素点的访问,因此进一步改写该式子为:

             G(x )= a*F(i,j) + b;

图像像素点遍历算法如下:

//遍历像素点并执行g=a*f+b操作
	for (int y = 0;y < image.rows;y++) {
		for (int x = 0;x < image.cols;x++) {
			for (int c = 0;c < 3;c++) {
				new_image.at<Vec3b>(y, x)[c] = saturate_cast<uchar>
					((a*0.01)*(image.at<Vec3b>(y, x)[c]) + b);
			}
		}
	}
其中访问RGB图像顺序位GBR,(x,y,c)代表第x行,第y列,第c通道

整体代码如下:

#include"stdafx.h"
#include <opencv2/core/utility.hpp>
#include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include <iostream>

using namespace cv;
using namespace std;

void listPixel_Operate(int, void*);

// 定义全局变量
int a, b;
Mat image, new_image;

int main() {
	//读取图片
	image = imread("E:\\pictures\\For_Project\\New_opencv\\Sceen\\12.jpg");
	//创建新的和原图片一样大小的空白图片用于接收对比度和亮度变换
	new_image = Mat::zeros(image.size(), image.type());
	//变换系数初值
	a = 100;
	b = 100;

	namedWindow("【效果图窗口】", 1);
	//创建滑动条
	createTrackbar("对比度", "【效果图窗口】", &a, 300, listPixel_Operate);
	createTrackbar("亮 度", "【效果图窗口】", &b, 300, listPixel_Operate);
	//调用回调函数
	listPixel_Operate(a, 0);
	listPixel_Operate(b, 0);
	//等待键盘按键‘q’退出
	while (char(waitKey(1)) != 'q') {}
	return 0;
}

void listPixel_Operate(int,void*) {
	namedWindow("【原图窗口】", 1);

	//遍历像素点并执行g=a*f+b操作
	for (int y = 0;y < image.rows;y++) {
		for (int x = 0;x < image.cols;x++) {
			for (int c = 0;c < 3;c++) {
				new_image.at<Vec3b>(y, x)[c] = saturate_cast<uchar>
					((a*0.01)*(image.at<Vec3b>(y, x)[c]) + b);
			}
		}
	}

	imshow("【原图】", image);
	imshow("【效果图窗口】", new_image);
}
效果图:



1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:17187次
    • 积分:960
    • 等级:
    • 排名:千里之外
    • 原创:82篇
    • 转载:0篇
    • 译文:1篇
    • 评论:1条
    最新评论