文章目录

  • 源码
  • 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 亮度 对比度 调节功能相关推荐

  1. python numpy opencv调整图片亮度对比度饱和度

    python 调整图片亮度对比度饱和度 安装依赖库 亮度变换 对比度变换 综合调整(完整代码) (想要完整代码直接划到最后) 原理比较简单,本质上是对图像各个通道的每个像素点做线性变换,对超出范围[0 ...

  2. opencv调节图片亮度对比度

     // opencv2.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" //------------------------------ ...

  3. 用OpenCV实现Photoshop算法(五): 亮度对比度调整

    系列文章: 用OpenCV实现Photoshop算法(一): 图像旋转 用OpenCV实现Photoshop算法(二): 图像剪切 用OpenCV实现Photoshop算法(三): 曲线调整 用Ope ...

  4. python opencv调节图片亮度与对比度

    python opencv调节图片亮度与对比度 亮度调整是将图像像素的强度整体变大/变小,对比度调整指的是图像暗处变得更暗,亮出变得更亮,从而拓宽某个区域内的显示精度. 创建两个滑动条分别调整对比度和 ...

  5. 2021-01-07 python opencv调节图片亮度与对比度

    python opencv调节图片亮度与对比度 度调整是将图像像素的强度整体变大/变小,对比度调整指的是图像暗处变得更暗,亮出变得更亮,从而拓宽某个区域内的显示精度. 创建两个滑动条分别调整对比度和亮 ...

  6. OpenCV改变图像的对比度和亮度

    OpenCV改变图像的对比度和亮度 改变图像的对比度和亮度 目标 理论 图像处理 像素变换 亮度和对比度调整 代码 解释 结果 改变图像的对比度和亮度 目标 在本教程中,您将学习如何: 访问像素值 用 ...

  7. 用OpenCV实现Photoshop算法(七): 调整色相饱和度

    系列文章: 用OpenCV实现Photoshop算法(一): 图像旋转 用OpenCV实现Photoshop算法(二): 图像剪切 用OpenCV实现Photoshop算法(三): 曲线调整 用Ope ...

  8. 用OpenCV实现Photoshop算法(四): 色阶调整

    系列文章: 用OpenCV实现Photoshop算法(一): 图像旋转 用OpenCV实现Photoshop算法(二): 图像剪切 用OpenCV实现Photoshop算法(三): 曲线调整 用Ope ...

  9. 用OpenCV实现Photoshop算法(八): 可选颜色

    系列文章: 用OpenCV实现Photoshop算法(一): 图像旋转 用OpenCV实现Photoshop算法(二): 图像剪切 用OpenCV实现Photoshop算法(三): 曲线调整 用Ope ...

最新文章

  1. asp.net 备份和恢复SQL SERVER 数据库
  2. javascript写滑动图片
  3. 因 Redis 分布式锁造成的 P0 级重大事故,整个项目组被扣了绩效。。。
  4. CentOS快捷键总结
  5. python拷贝是什么知识点_python闭包、深浅拷贝、垃圾回收、with语句知识点汇总...
  6. 安全模式 提权_记一次渗透挖洞提权实战
  7. python全部语法_python基本语法
  8. 机器学习基础:模糊C均值聚类(Machine Learning Fundamentals: Fuzzy C-Means )Python实现
  9. 常见RFID卡片介绍、破解思路 及 Proxmark3简介
  10. matlab-imresize-最近邻插值、双线性插值、双三次插值学习总结
  11. iPhone6(IOS12.5.5)越狱记录
  12. 移动硬盘参数错误要怎么办啊
  13. 从西天取经事件看官场潜规则
  14. Android平台上使用气压传感器计算海拔高度
  15. SpringBoot + Element UI 楠橘星后台管理系统一键打包部署教程文档
  16. dos系统的界面字体设置
  17. 【cv君个人整理学习路线】视觉算法从入门到进阶
  18. LaTex排版 正文间距(段行列间距)调整与表格调整(宽度, 合并, 表注)
  19. Android13 App 预装详解
  20. 利用Python3.x 删除字符串中的特殊字符——即ASCII控制字符

热门文章

  1. GSM和GPRS网络原理的基本思路
  2. 小波调研(二):一维离散小波分析
  3. ANSYS附加动水质量(westergarrd公式)
  4. js给对象添加变量属性 js 更改对象中的属性名 数组对象中每个对象添加一个字段-map用法和forEarch用法
  5. iPhone X,iPhone XS,iPhone XR,iPHone XS Max 适配(只说实现,不BB)
  6. 【IDEA】idea插件的安装和删除
  7. 星巴克REST案例分析(转载自InfoQ)
  8. Lesson 13-14 How often do you exercise?
  9. Lect2 线性分类
  10. getApplicationContext 详解