python opencv图像对比度_OpenCV基础(四)---图像对比度,亮度调整
图像对比度,亮度调整
图像对比度,指不同像素间的差值,差值越大,对比度越大.
图像亮度,对于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基础(四)---图像对比度,亮度调整相关推荐
- python opencv cv2.cvtColor()方法(将图像从一种颜色空间转换为另一种颜色空间)(转换成灰度图)
def cvtColor(src, code, dst=None, dstCn=None): # real signature unknown; restored from __doc__" ...
- opencv 把3通道图像转成单通道_小强学Python+OpenCV之-1.4.3图像(矩阵)加减运算
引入 问题引入,考虑以下几个问题: Q1. 一个3通道像素p的BGR分量(8bit表示)值均相同,那么这个像素是什么颜色的? Q2. 该像素p加上自己,即,像素p的各个通道值翻倍,那么这个像素的颜色会 ...
- Python+OpenCV 图像处理系列(9)—— 图像的翻转和缩放插值
1. 图像的翻转 图像翻转 (Image Flip),图像翻转的本质像素映射,OpenCV 支持三种图像翻转方式: X轴翻转,flipcode = 0 Y轴翻转, flipcode = 1 XY轴翻转 ...
- python opencv imread(filename, flags=None) 读取图像 flags cv::ImreadModes 参数上哪看去?
在调用opencv的imread(filename, flags=None)函数时,后面有个flags=None参数,但打开文档轻描淡写,不知该参数上哪找去,用全局搜索也搜不到,莫非要到官网查?(擦汗 ...
- 第2章 Python 数字图像处理(DIP) --数字图像基础3 - 图像内插 - 最近邻内插 - 双线性插值 - 双三次内插 - 图像放大
目录 图像内插 放大图像 图像内插 内插通常在图像放大.缩小.旋转和几何校正等任务中使用.内插并用它来调整图像的大小(缩小和放大),缩小和放大基本上采用图像重取样方法 最近邻内插,这种方法将原图像中最 ...
- Python+Opencv图像处理新手入门教程(四):视频内容的读取与导出
一步一步来吧 上一节: Python+Opencv图像处理新手入门教程(三):阈值与二值化 1.Intro 今天这节我们主要看怎么利用opencv读取并处理视频中的内容. 2.VideoCapture ...
- python opencv 识别角度_OpenCV入门之获取图像的旋转角度
在我们的日常生活中,所碰到的图像往往都有一定的倾斜.那么,如何用OpenCV来获取图像的旋转角度呢? 我们以下面的图片为例,简单介绍如何用OpenCV来获取图像的旋转角度. 可以看到,该图像存在着许多 ...
- python+OpenCV笔记(二十四):Shi-Tomasi角点检测
Shi-Tomasi角点检测 原理 python+OpenCV笔记(二十二):角点检测原理(Harris角点检测原理.Shi-Tomasi角点检测原理)https://blog.csdn.net/qq ...
- python opencv 轮廓检测_opencv之轮廓检测与处理
查找图像的轮廓在图像处理及应用中扮演着重要的角色. opencv中 查找轮廓的函数提供的是cv::findContours() 把查找的轮廓划到图像上cv::drawContours() 1.轮廓的查 ...
- python+OpenCv笔记(六):图像的几何变换(缩放、平移、旋转、仿射、透射、金字塔)
一.图像的缩放 OpenCv API: cv2.resize(src, dsize, fx, fy, interpolation) 参数: src:输入的图像 dsize:绝对尺寸,直接将图像调整为指 ...
最新文章
- beamSearch算法原理
- linux下安装 配置 redis数据库
- tomcat 虚拟路径 与 虚拟主机配置
- mysql字符集排序规则_Mysql 字符集及排序规则
- 利器:服务器与CST时间误差8小时的修复方法——timedatectl
- 做中学之教与学工具箱
- django 跳转其他网站_Django 实战 | 搭一个 GitHub 用户展示网站 04
- python不同版本安装;第三方库的安装
- [Python] pdb 调试
- php中全局变量如何设置,如何在php中声明全局变量?
- GitHub疯传!北大学霸的LeetCode刷题笔记火了
- 聊聊人像抠图背后的算法技术
- IOS 高德地图导航
- 腾讯云主机学生版 修改主机名
- 使用Aptana Studio 3开发python教程
- 一些特殊字符,由于编码问题显示不出来
- 计算机如何修改用户名和密码忘了怎么办,电脑用户名密码忘记怎么办
- C++ 三阶魔方还原
- 树莓派文字转语音 python_树莓派的语音识别
- 【精品】Thymeleaf 语法基础
热门文章
- mac php codesniffer,[转载]使用PHP_CodeSniffer规范php代码
- gre填空高频词汇整理
- 用Python实现一个软件自动升级系统
- 关于U盘免疫的一些自我认识
- CentOS7各个版本镜像下载地址及说明、Everything版
- 神战奇迹私服进游戏选择服务器显示数字,最新mu手游奇迹sf发布
- 密码编码学与网络安全(第五版)课后习题-CH03
- 高级控件及自动提示文本框与下拉列表
- [其他] ATI HD6630M 显卡在Win10下终于有救了(DEll 14R N4120)
- 简单架设Jabber 局域网即时通讯服务器