opencv 实现 Photoshop 亮度 对比度 调节功能
文章目录
- 源码
- Photoshop的亮度对比度工具
- LUT 颜色查找表
- 代码
- 效果
源码
VirtualStudio2019的工程。可直接运行
Photoshop的亮度对比度工具
这是photoshop的工具,下面用opencv实现该功能
LUT 颜色查找表
LUT 的作用很简单,就是将其像素的灰度值转换为规定的灰度值。
例如:我们想将一张图片灰度为0-100的像素的灰度变成0,101-200的变成100,201-255的变成255。我们就可已建立如下的一张表格;
位置 | 值 |
---|---|
1 | 0 |
2 | 0 |
… | … |
100 | 0 |
101 | 100 |
102 | 100 |
… | … |
200 | 100 |
201 | 200 |
202 | 200 |
… | … |
255 | 200 |
当把此表格应用到图片时,图片0-100灰度的像素灰度就变成0,101-200的变成100,201-255的就变成255。
多通道图片使用单通道的LUT是则所有通道都用同一个LUT
代码
void brightnesscallback(int pos, void* usrdata) {cv::Mat src = *(cv::Mat*)(usrdata);cv::Mat dst;double PI = 3.1415926;double B = ((double)pos - 255) / 255;double c = ((double)contrast - 255) / 255;double k = tan((45 + 44 * c) / 180 * PI);cv::Mat lookupTable(1, 256, CV_8UC1);uchar* p = lookupTable.data;for (int i = 0; i < 256; i++) {p[i] = CLIP_RANGE((i - 127.5 * (1 - B)) * k + 127.5 * (1 + B), 0, 255);}cv::LUT(src, lookupTable, dst);cv::imshow(window_name, dst);
}void contrastcallback(int pos, void* usrdata) {cv::Mat src = *(cv::Mat*)(usrdata);cv::Mat dst;double PI = 3.1415926;double B = ((double)brightness - 255) / 255;double c = ((double)pos - 255) / 255.;double k = tan((45 + 44 * c) / 180 * PI);cv::Mat lookupTable(1, 256, CV_8U);uchar* p = lookupTable.data;for (int i = 0; i < 256; i++) {p[i] = CLIP_RANGE((i - 127.5 * (1 - B)) * k + 127.5 * (1 + B), 0, 255);}cv::LUT(src, lookupTable, dst);cv::imshow(window_name, dst);
}int main() {cv::Mat src = cv::imread("./1.jpg", cv::IMREAD_COLOR);if (!src.data) {std::cout << "error: no image" << std::endl;return 0;}cv::namedWindow(window_name, 0);createTrackbar("brightness", window_name, &brightness, 2 * brightness, brightnesscallback, &src);createTrackbar("contrast", window_name, &contrast, 2 * contrast, contrastcallback, &src);cv::imshow(window_name, src);cv::waitKey();return 0;
}
效果
opencv 实现 Photoshop 亮度 对比度 调节功能相关推荐
- python numpy opencv调整图片亮度对比度饱和度
python 调整图片亮度对比度饱和度 安装依赖库 亮度变换 对比度变换 综合调整(完整代码) (想要完整代码直接划到最后) 原理比较简单,本质上是对图像各个通道的每个像素点做线性变换,对超出范围[0 ...
- opencv调节图片亮度对比度
// opencv2.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" //------------------------------ ...
- 用OpenCV实现Photoshop算法(五): 亮度对比度调整
系列文章: 用OpenCV实现Photoshop算法(一): 图像旋转 用OpenCV实现Photoshop算法(二): 图像剪切 用OpenCV实现Photoshop算法(三): 曲线调整 用Ope ...
- python opencv调节图片亮度与对比度
python opencv调节图片亮度与对比度 亮度调整是将图像像素的强度整体变大/变小,对比度调整指的是图像暗处变得更暗,亮出变得更亮,从而拓宽某个区域内的显示精度. 创建两个滑动条分别调整对比度和 ...
- 2021-01-07 python opencv调节图片亮度与对比度
python opencv调节图片亮度与对比度 度调整是将图像像素的强度整体变大/变小,对比度调整指的是图像暗处变得更暗,亮出变得更亮,从而拓宽某个区域内的显示精度. 创建两个滑动条分别调整对比度和亮 ...
- OpenCV改变图像的对比度和亮度
OpenCV改变图像的对比度和亮度 改变图像的对比度和亮度 目标 理论 图像处理 像素变换 亮度和对比度调整 代码 解释 结果 改变图像的对比度和亮度 目标 在本教程中,您将学习如何: 访问像素值 用 ...
- 用OpenCV实现Photoshop算法(七): 调整色相饱和度
系列文章: 用OpenCV实现Photoshop算法(一): 图像旋转 用OpenCV实现Photoshop算法(二): 图像剪切 用OpenCV实现Photoshop算法(三): 曲线调整 用Ope ...
- 用OpenCV实现Photoshop算法(四): 色阶调整
系列文章: 用OpenCV实现Photoshop算法(一): 图像旋转 用OpenCV实现Photoshop算法(二): 图像剪切 用OpenCV实现Photoshop算法(三): 曲线调整 用Ope ...
- 用OpenCV实现Photoshop算法(八): 可选颜色
系列文章: 用OpenCV实现Photoshop算法(一): 图像旋转 用OpenCV实现Photoshop算法(二): 图像剪切 用OpenCV实现Photoshop算法(三): 曲线调整 用Ope ...
最新文章
- asp.net 备份和恢复SQL SERVER 数据库
- javascript写滑动图片
- 因 Redis 分布式锁造成的 P0 级重大事故,整个项目组被扣了绩效。。。
- CentOS快捷键总结
- python拷贝是什么知识点_python闭包、深浅拷贝、垃圾回收、with语句知识点汇总...
- 安全模式 提权_记一次渗透挖洞提权实战
- python全部语法_python基本语法
- 机器学习基础:模糊C均值聚类(Machine Learning Fundamentals: Fuzzy C-Means )Python实现
- 常见RFID卡片介绍、破解思路 及 Proxmark3简介
- matlab-imresize-最近邻插值、双线性插值、双三次插值学习总结
- iPhone6(IOS12.5.5)越狱记录
- 移动硬盘参数错误要怎么办啊
- 从西天取经事件看官场潜规则
- Android平台上使用气压传感器计算海拔高度
- SpringBoot + Element UI 楠橘星后台管理系统一键打包部署教程文档
- dos系统的界面字体设置
- 【cv君个人整理学习路线】视觉算法从入门到进阶
- LaTex排版 正文间距(段行列间距)调整与表格调整(宽度, 合并, 表注)
- Android13 App 预装详解
- 利用Python3.x 删除字符串中的特殊字符——即ASCII控制字符
热门文章
- GSM和GPRS网络原理的基本思路
- 小波调研(二):一维离散小波分析
- ANSYS附加动水质量(westergarrd公式)
- js给对象添加变量属性 js 更改对象中的属性名 数组对象中每个对象添加一个字段-map用法和forEarch用法
- iPhone X,iPhone XS,iPhone XR,iPHone XS Max 适配(只说实现,不BB)
- 【IDEA】idea插件的安装和删除
- 星巴克REST案例分析(转载自InfoQ)
- Lesson 13-14 How often do you exercise?
- Lect2 线性分类
- getApplicationContext 详解