图像对比度,亮度调整

图像对比度,指不同像素间的差值,差值越大,对比度越大.

图像亮度,对于RGB图像,亮度最大为(255,255,255),最暗为(0,0,0).

调整公式如上,f(x)为源图像,g(x)为输出图像

α为增益,用于设置图像对比度

β为偏置,用于调整图像亮度

函数介绍:createTrackbar()

这里创建了两个滑动条,用于调整α,β

函数原型: int createTrackbar(const String& trackbarname, const String& winname,

int* value, int count,

TrackbarCallback onChange = 0,

void* userdata = 0);

参数说明:

const String& trackbarname:滑动条的名字

const String& winname:窗口的名称,该窗口将用作创建的滑动条的父窗口

int* value:值可选指针,指向一个整型变量,其值反映滑块的位置。创建时,滑块位置由该变量定义

int count:滑块的最大位置。最小位置总是0。

TrackbarCallback onChange = 0:指针指向每次滑块改变位置时要调用的函数。这个函数的原型应该是void Foo(int,void\*);,其中第一个参数是trackbar位 置,第二个参数是用户数据(参见下一个参数)。如果回调是空指针,则不调用回调,只更新值

void* userdata = 0: 作为回调函数传递的用户数据。它可以在不使用全局变量的情况下处理trackbar事件

代码演示

1 #include

2 #include

3

4 using namespacestd;5 using namespacecv;6

7 Mat src, dst;8 const char * contrast_bar = "对比度";9 const char * bright_bar = "亮度";10 const char * window_name = "效果图";11 intcontrast_value;12 intbright_value;13 int max_contrast = 200; //最大对比度,为2倍

14 int max_bright = 100; //最大偏置

15 intchannels;16 static void adjustContrastAndBright(int, void *);17

18 intmain()19 {20 src = imread("D:/xiaobai.png");21 if(src.empty()) {22 cout << "could not load image..." <

28 contrast_value = 100; //设置初始对比度

29 bright_value = 0; //设置初始亮度

30

31 namedWindow(window_name, CV_WINDOW_AUTOSIZE);32

33 //创建轨迹条

34 createTrackbar(contrast_bar, window_name, &contrast_value, max_contrast, adjustContrastAndBright);35 createTrackbar(bright_bar, window_name, &bright_value, max_bright, adjustContrastAndBright);36

37 //调用回调函数

38 adjustContrastAndBright(contrast_value, 0);39 adjustContrastAndBright(bright_value, 0);40

41 waitKey(0);42 return 0;43 }44

45 static void adjustContrastAndBright(int, void *)46 {47 switch(channels)48 {49 case 1:50 for (int row = 0; row < src.rows; row++)51 for (int col = 0; col < src.cols; col++){52 float v = src.at(row, col);53 //saturate_cast 限制结果在0-255之间

54 dst.at(row, col) = saturate_cast(v * contrast_value * 0.01 + bright_value); //调整

55 }56 case 3:57 for (int row = 0; row < src.rows; row++)58 for (int col = 0; col < src.cols; col++) {59 float b = src.at(row, col)[0];//blue

60 float g = src.at(row, col)[1]; //green

61 float r = src.at(row, col)[2]; //red62 //调整

63 dst.at(row, col)[0] = saturate_cast(b * contrast_value * 0.01 +bright_value);64 dst.at(row, col)[1] = saturate_cast(g * contrast_value * 0.01 +bright_value);65 dst.at(row, col)[2] = saturate_cast(r * contrast_value * 0.01 +bright_value);66 }67 }68 imshow(window_name, dst);69 }

原始图像

效果图

python opencv图像对比度_OpenCV基础(四)---图像对比度,亮度调整相关推荐

  1. python opencv cv2.cvtColor()方法(将图像从一种颜色空间转换为另一种颜色空间)(转换成灰度图)

    def cvtColor(src, code, dst=None, dstCn=None): # real signature unknown; restored from __doc__" ...

  2. opencv 把3通道图像转成单通道_小强学Python+OpenCV之-1.4.3图像(矩阵)加减运算

    引入 问题引入,考虑以下几个问题: Q1. 一个3通道像素p的BGR分量(8bit表示)值均相同,那么这个像素是什么颜色的? Q2. 该像素p加上自己,即,像素p的各个通道值翻倍,那么这个像素的颜色会 ...

  3. Python+OpenCV 图像处理系列(9)—— 图像的翻转和缩放插值

    1. 图像的翻转 图像翻转 (Image Flip),图像翻转的本质像素映射,OpenCV 支持三种图像翻转方式: X轴翻转,flipcode = 0 Y轴翻转, flipcode = 1 XY轴翻转 ...

  4. python opencv imread(filename, flags=None) 读取图像 flags cv::ImreadModes 参数上哪看去?

    在调用opencv的imread(filename, flags=None)函数时,后面有个flags=None参数,但打开文档轻描淡写,不知该参数上哪找去,用全局搜索也搜不到,莫非要到官网查?(擦汗 ...

  5. 第2章 Python 数字图像处理(DIP) --数字图像基础3 - 图像内插 - 最近邻内插 - 双线性插值 - 双三次内插 - 图像放大

    目录 图像内插 放大图像 图像内插 内插通常在图像放大.缩小.旋转和几何校正等任务中使用.内插并用它来调整图像的大小(缩小和放大),缩小和放大基本上采用图像重取样方法 最近邻内插,这种方法将原图像中最 ...

  6. Python+Opencv图像处理新手入门教程(四):视频内容的读取与导出

    一步一步来吧 上一节: Python+Opencv图像处理新手入门教程(三):阈值与二值化 1.Intro 今天这节我们主要看怎么利用opencv读取并处理视频中的内容. 2.VideoCapture ...

  7. python opencv 识别角度_OpenCV入门之获取图像的旋转角度

    在我们的日常生活中,所碰到的图像往往都有一定的倾斜.那么,如何用OpenCV来获取图像的旋转角度呢? 我们以下面的图片为例,简单介绍如何用OpenCV来获取图像的旋转角度. 可以看到,该图像存在着许多 ...

  8. python+OpenCV笔记(二十四):Shi-Tomasi角点检测

    Shi-Tomasi角点检测 原理 python+OpenCV笔记(二十二):角点检测原理(Harris角点检测原理.Shi-Tomasi角点检测原理)https://blog.csdn.net/qq ...

  9. python opencv 轮廓检测_opencv之轮廓检测与处理

    查找图像的轮廓在图像处理及应用中扮演着重要的角色. opencv中 查找轮廓的函数提供的是cv::findContours() 把查找的轮廓划到图像上cv::drawContours() 1.轮廓的查 ...

  10. python+OpenCv笔记(六):图像的几何变换(缩放、平移、旋转、仿射、透射、金字塔)

    一.图像的缩放 OpenCv API: cv2.resize(src, dsize, fx, fy, interpolation) 参数: src:输入的图像 dsize:绝对尺寸,直接将图像调整为指 ...

最新文章

  1. beamSearch算法原理
  2. linux下安装 配置 redis数据库
  3. tomcat 虚拟路径 与 虚拟主机配置
  4. mysql字符集排序规则_Mysql 字符集及排序规则
  5. 利器:服务器与CST时间误差8小时的修复方法——timedatectl
  6. 做中学之教与学工具箱
  7. django 跳转其他网站_Django 实战 | 搭一个 GitHub 用户展示网站 04
  8. python不同版本安装;第三方库的安装
  9. [Python] pdb 调试
  10. php中全局变量如何设置,如何在php中声明全局变量?
  11. GitHub疯传!北大学霸的LeetCode刷题笔记火了
  12. 聊聊人像抠图背后的算法技术
  13. IOS 高德地图导航
  14. 腾讯云主机学生版 修改主机名
  15. 使用Aptana Studio 3开发python教程
  16. 一些特殊字符,由于编码问题显示不出来
  17. 计算机如何修改用户名和密码忘了怎么办,电脑用户名密码忘记怎么办
  18. C++ 三阶魔方还原
  19. 树莓派文字转语音 python_树莓派的语音识别
  20. 【精品】Thymeleaf 语法基础

热门文章

  1. mac php codesniffer,[转载]使用PHP_CodeSniffer规范php代码
  2. gre填空高频词汇整理
  3. 用Python实现一个软件自动升级系统
  4. 关于U盘免疫的一些自我认识
  5. CentOS7各个版本镜像下载地址及说明、Everything版
  6. 神战奇迹私服进游戏选择服务器显示数字,最新mu手游奇迹sf发布
  7. 密码编码学与网络安全(第五版)课后习题-CH03
  8. 高级控件及自动提示文本框与下拉列表
  9. [其他] ATI HD6630M 显卡在Win10下终于有救了(DEll 14R N4120)
  10. 简单架设Jabber 局域网即时通讯服务器