关闭

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

标签: opencvcreateTracker
712人阅读 评论(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
查看评论

Qt图片调整之亮度调节

原理: 获取图片像素点RGB分量值,直接加上亮度值。 void AdjustBright(QImage Image, int bright) { Image.load("..."); if (0 == bright) return ; ...
  • u013015629
  • u013015629
  • 2017-01-22 17:00
  • 675

Opencv图像对比度和亮度的调整-滚动条

#include #include #include"stdio.h" using namespace std; using namespace cv; Mat srcImage, resultImage; int g_nContrast, g_nBright; const ...
  • qq_23880193
  • qq_23880193
  • 2015-08-30 21:12
  • 544

opencv for pyhton (5) 用滑动条做调色板

程序功能: 通过调节滑动条来设定画板的颜色,我们要创建一个窗口来显示颜色,还有三个滑动条来设置BGR的颜色,当我们滑动滚动条时窗口的颜色也会发生相应的变化 cv2.createTrackbar(‘G’,’image’,0,255,nothing)函数第一个参数是滑动条的名字,第二...
  • qq_30909117
  • qq_30909117
  • 2017-11-25 21:41
  • 16

python opencv入门 滚动条控制调色板(5)

内容来自OpenCV-Python Tutorials 自己翻译整理目标: 使用滚动条绑定窗口 学习如下函数 cv2.getTrackbarPos(), cv2.createTrackbar() 样例代码: 这里建立了一个简单的样例来现实用户指定的颜色。用户使用三个滚动条来指定B,G,R值,同...
  • tengfei461807914
  • tengfei461807914
  • 2017-07-18 16:38
  • 624

OpenCV 图像对比度和亮度调节

一. 实验描述用OpenCV的滑动条和像素操作对图像的对比度和亮度进行调节。二. 实验代码#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp...
  • whai362
  • whai362
  • 2016-08-28 09:46
  • 447

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

学习到范例五的时候,发觉虽然范例都很简单,但是做记录的时候,并且把程序里面使用过的类或方法都弄明白,也就不简单了,接下来介绍一下范例五吧。 1、图像处理 一般来说,图像处理算子是带有一幅或多幅输入图像、产生一幅输出图像的函数。 图像变换可分为以下两种: 点算子(像素变换):图像对比度和亮度,...
  • chenjiazhou12
  • chenjiazhou12
  • 2014-03-12 23:01
  • 2667

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

参考: 1、https://docs.opencv.org/3.2.0/ 2、https://github.com/opencv/opencv/Changing the contrast and brightness of an image! 访问像素值 用零初始化一个矩阵 了解cv :: ...
  • wc781708249
  • wc781708249
  • 2017-11-05 11:13
  • 300

调整图片的饱和度,对比度,色彩,亮度,旋转图片

  flex里面实现对图片的饱和度,对比度,色彩,亮度的操作,涉及到图片的相关知识处理。网上找到一个文章,对flex矩阵处理图片原来讲的不错:http://www.cppblog.com/twzheng/articles/35510.html  但我们幸运的是,已经有国外高人写好...
  • talentluo
  • talentluo
  • 2009-05-22 11:06
  • 2485

图像处理------调整亮度与对比度

很多时候,一张图像被过度曝光显得很白,或者光线不足显得很暗,有时候背景跟图像人物也观察不清楚,这个时候可以通过调节图像的两个基本属性-亮度与对比度来获得整体效果的提升,从而得到质量更高的图片。 基本原理:图像亮度本质上图像中每个像素的亮度,每个像素的亮度本质上RGB值的大小,RGB值为0是...
  • mao0514
  • mao0514
  • 2015-07-24 09:51
  • 4745

基于OpenCV调整图像的对比度和亮度

亮度和对比度的调整原理  公式原理: new_image = a*image + beta 即  g(x)=αf(x)+β   其中,α>0 , β 通常被称为 gain 或者 bias 参数,通常这两个参数可以独立的分别控制图像的对比度和亮度。   f(x) 为原图像的像素值...
  • Real_Myth
  • Real_Myth
  • 2016-11-02 20:44
  • 1811
    个人资料
    • 访问:56375次
    • 积分:2004
    • 等级:
    • 排名:千里之外
    • 原创:145篇
    • 转载:2篇
    • 译文:1篇
    • 评论:5条
    最新评论