Qt图像处理技术三:图片亮度和对比度处理

github地址

实战应用项目:
github :https://github.com/dependon/simple-image-filter //纯qt图像处理项目

效果图

公式

value都是取0-300
red=0.01对比值red-150+曝光值;
green=0.01对比值green-150+曝光值;
blue=0.01对比值blue-150+曝光值;

代码(容易理解)

QImage lightContrastImage(const QImage &img,  int light, int Contrast)
{
QImage imgCopy = QImage(img); for (int y = 0; y < img.height(); y++) {
for (int x = 0; x < img.width(); x++) {
float r = light * 0.01 * qRed(img.pixel(x, y)) - 150 + Contrast;
float g = light * 0.01 * qGreen(img.pixel(x, y)) - 150 + Contrast;
float b = light * 0.01 * qBlue(img.pixel(x, y)) - 150 + Contrast;
r = Bound(0, r, 255);
g = Bound(0, g, 255);
b = Bound(0, b, 255);
imgCopy.setPixel(x, y, qRgb(r, g, b));
} }
return imgCopy;
}

源码(相对上述源码快5-20倍,因为绕过了Qt每个取点的检测)

QImage QImageAPI::lightContrastImage(const QImage &img,  int light, int Contrast)
{
QImage imgCopy;
if (img.format() != QImage::Format_RGB888) {
imgCopy = QImage(img).convertToFormat(QImage::Format_RGB888);
} else {
imgCopy = QImage(img);
}
uint8_t *rgb = imgCopy.bits();
if (nullptr == rgb) {
return QImage();
}
int r;
int g;
int b;
int size = img.width() * img.height();
for (int i = 0; i < size ; i++) {
r = light * 0.01 * rgb[i * 3] - 150 + Contrast;
g = light * 0.01 * rgb[i * 3 + 1] - 150 + Contrast;
b = light * 0.01 * rgb[i * 3 + 2] - 150 + Contrast;
r = Bound(0, r, 255);
g = Bound(0, g, 255);
b = Bound(0, b, 255);
rgb[i * 3] = r;
rgb[i * 3 + 1] = g;
rgb[i * 3 + 2] = b;
} return imgCopy;
}

联系我

liuminghang0821@qq.com
有问必答,期待你的指教肯小星星

Qt图像处理技术三:图片亮度与对比度处理的更多相关文章

  1. Opencv学习笔记4:Opencv处理调整图片亮度和对比度

    一.理论基础 在数学中我们学过线性理论,在图像亮度和对比度调节中同样适用,看下面这个公式: 在图像像素中其中: 参数f(x)表示源图像像素. 参数g(x) 表示输出图像像素. 参数a(需要满足a> ...

  2. C#调整图片亮度和对比度

    BitmapSource bitmap = null; ; ; private void SetBrightness(int degree) { degree = degree * / ; Write ...

  3. Qt开发技术:QCharts(三)QCharts样条曲线图介绍、Demo以及代码详解

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  4. Qt开发技术:Q3D图表开发笔记(三):Q3DSurface三维曲面图介绍、Demo以及代码详解

    前言   qt提供了q3d进行三维开发,虽然这个框架没有得到大量运用也不是那么成功,性能上也有很大的欠缺,但是普通的点到为止的应用展示还是可以的.  其中就包括华丽绚烂的三维图表,数据量不大的时候是可 ...

  5. Qt自适应大小显示图片,添加菜单

    由于后面的图像处理需要UI,OpenCV自带也不怎么会,MFC实在懒得学的.听同学说Qt不错,就用Qt做UI了. 本文主要介绍三个内容:在Qt Creator中使用OpenCV2.Qt中自适应显示图片 ...

  6. HTML5图形图像处理技术研究

    摘要:图形图像处理平台大部分是传统的C/S架构的桌面应用程序,维护困难,共享性差,而B/S架构的Web程序具有易维护.易共享的优点.本文研究了基于HTML5的Web图形图像处理技术,用HTML5实现了 ...

  7. GDI+图形图像处理技术中Pen和Brush的简单使用和简单图形的绘制(C#)

    1.Graphics Graphics对象是GDI+绘图表面,因此在Windows窗体应用程序中要使用GDI+创建绘图,必须要先创建Graphics.在给窗体注册一个Paint事件后,Graphics ...

  8. BackgroundCheck – 根据图片亮度智能切换元素样式

    BackgroundCheck 是一个轻量的 JavaScript 库,能够根据元素后面的图片的亮度自动切换元素样式.例如在图片幻灯片功能中,根据图片亮度调整导航箭头的颜色,这样让图片和导航的颜色形成 ...

  9. Python-OpenCV——亮度和对比度

    亮度与对比度 亮度调整是将图像像素的强度整体变大/变小,对比度调整指的是图像暗处变得更暗,亮出变得更亮,从而拓宽某个区域内的显示精度. OpenCV中亮度和对比度应用这个公式来计算:g(x) = αf ...

  10. moviepy音视频剪辑:lum_contrast什么时候使用以及图像处理什么时候需要调整亮度与对比度

    ☞ ░ 前往老猿Python博文目录 ░ 一.亮度.对比度的概念 图像的亮度(luminosity )也即对明度的度量(参考<音视频处理基础知识扫盲:数字视频YUV像素表示法以及视频帧和编解码概 ...

随机推荐

  1. Java、Python等接入方式对接股票数据源API接口

    为了创建一个Python项目来对接StockTV的API接口,我们可以使用requests库来发送HTTP请求,并使用websocket-client库来处理WebSocket连接.以下是一个简单的P ...

  2. redmine 迁移后邮箱配置

    https://blog.csdn.net/love8753/article/details/126380927 步骤一 修改配置文件 步骤二 redmine 页面配置信息 步骤一 修改配置文件 打开 ...

  3. 编写你的第一个 Django 应用程序,第4部分

    本教程从教程 3 停止的地方开始.我们是 继续民意调查应用程序,并将专注于表单处理和 减少我们的代码. 一.编写最小表单 让我们更新上一个教程的投票详细信息模板("polls/detail. ...

  4. C# 中比较实用的关键字,基础高频面试题!

    前言 在C#编程中关键字是构建逻辑和实现功能的基石,它承载着编程语言的语法规则和编程智慧.熟练掌握这些基础高频关键字对提升编程能力和面试表现至关重要,它们是日常开发和解决复杂问题的关键. DotNet ...

  5. BUUCTF---萌萌哒的八戒(猪圈密码)

    1. 问题 2.知识点 猪圈密码 3.解题 对应解题,套上flag{whenthepigwanttoeat}

  6. Effective Java理解笔记系列-第1条-何时考虑用静态工厂方法替代构造器?

    为什么写这系列博客? 在阅读<Effective Java>这本书时,我发现有许多地方需要仔细认真地慢慢阅读并且在必要时查阅相关资料才能彻底搞懂,相信有些读者在阅读此书时也有类似感受:同时 ...

  7. ASP.NET之设置默认文档

    通常... <!--Web.config--> <configuration> <!--指定默认文档 Start Author:JAnnn Time:2015-01-10 ...

  8. study Python3【2】导入模块

    import 与 from...import 在 python 用 import 或者 from...import 来导入相应的模块. 将整个模块(somemodule)导入,格式为: import ...

  9. HTB打靶记录-Vintage

    信息收集 nmap -sV -sC -O 10.10.11.45 Nmap scan report for 10.10.11.45 Host is up (2.1s latency). Not sho ...

  10. python 关于__init__()方法的用法

    __init__()方法需要结合class一起来使用更加有效 关于__init__()的含义,查到解释是"负责对象的初始化",听起来挺懵逼的,还是结合实例来理解较好 直接看代码 c ...