[开源]Qt图片调整之饱和度调节

2024-08-25 00:18

本文主要是介绍[开源]Qt图片调整之饱和度调节,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原理较简单不作详述

 

QImage AdjustSaturation(QImage Img, int iSaturateValue)
{int red, green, blue, nRed, nGreen, nBlue;int pixels = Img.width() * Img.height();unsigned int *data = (unsigned int *)Img.bits();float Increment = iSaturateValue/100.0;float delta = 0;float minVal, maxVal;float L, S;float alpha;for (int i = 0; i < pixels; ++i){nRed = qRed(data[i]);nGreen = qGreen(data[i]);nBlue = qBlue(data[i]);minVal = std::min(std::min(nRed, nGreen), nBlue);maxVal = std::max(std::max(nRed, nGreen), nBlue);delta = (maxVal - minVal) / 255.0;L = 0.5*(maxVal + minVal) / 255.0;S = std::max(0.5*delta / L, 0.5*delta / (1 - L));if (Increment > 0){alpha = std::max(S, 1 - Increment);alpha = 1.0 / alpha - 1;red = nRed + (nRed - L*255.0)*alpha;red = (red < 0x00) ? 0x00 : (red > 0xff) ? 0xff : red;green = nGreen + (nGreen - L*255.0)*alpha;green = (green < 0x00) ? 0x00 : (green > 0xff) ? 0xff : green;blue = nBlue + (nBlue - L*255.0)*alpha;blue = (blue < 0x00) ? 0x00 : (blue > 0xff) ? 0xff : blue;}else{alpha = Increment;red = L*255.0 + (nRed - L * 255.0)*(1+alpha);red = (red < 0x00) ? 0x00 : (red > 0xff) ? 0xff : red;green = L*255.0 + (nGreen - L * 255.0)*(1+alpha);green = (green < 0x00) ? 0x00 : (green > 0xff) ? 0xff : green;blue = L*255.0 + (nBlue - L * 255.0)*(1+alpha);blue = (blue < 0x00) ? 0x00 : (blue > 0xff) ? 0xff : blue;}data[i] = qRgba(red, green, blue, qAlpha(data[i]));}return Img;
}

 

 

 

 

 

这篇关于[开源]Qt图片调整之饱和度调节的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1104011

相关文章

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk

Spring MVC 图片上传

引入需要的包 <dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-

HomeBank:开源免费的个人财务管理软件

在个人财务管理领域,找到一个既免费又开源的解决方案并非易事。HomeBank&nbsp;正是这样一个项目,它不仅提供了强大的功能,还拥有一个活跃的社区,不断推动其发展和完善。 开源免费:HomeBank 是一个完全开源的项目,用户可以自由地使用、修改和分发。用户友好的界面:提供直观的图形用户界面,使得非技术用户也能轻松上手。数据导入支持:支持从 Quicken、Microsoft Money