Qt图片调整之饱和度调节
来源:互联网 发布:硬笔书法网络课程 编辑:程序博客网 时间:2024/06/05 10:12
原理较简单不作详述
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;}
0 0
- Qt图片调整之饱和度调节
- Qt图片调整之亮度调节
- Qt图片调整之对比度调节
- 图片饱和度,色相,亮度调整
- iOS 调节图片亮度,饱和度,对比度
- 饱和度调整
- 图像处理之调整亮度与饱和度
- 图像处理之调整亮度与饱和度
- 图像处理之调整亮度与饱和度
- 调整图片的饱和度,对比度,色彩,亮度,旋转图片
- 【Android图像处理】图像处理之-色相、饱和度、亮度调节
- Android改变图片属性之饱和度
- 图像饱和度调整 参考
- OpenCV——饱和度调整
- Python: PS 图像调整--饱和度调整
- 调整图片之简介
- Qt学习笔记之图片显示(自动调整大小适应设计的范围)
- PPStream调整亮度,色度,饱和度,对比度
- 三角形求面积
- Ajax 遍历data中的Josn数据,取出每个字段的值;
- 嵌入式及ARM简介
- java后台:response.getwriter().write 乱码解决
- string 和 wstring 互相转换的方法(即 Ansi & Unicode 在标准库下的互转)
- Qt图片调整之饱和度调节
- Mongodb性能监控
- react-native android白屏优化
- 求周长
- linux设备驱动归纳总结(三):7.异步通知fasync
- 算法基础-字符移位(逻辑)
- 剑指offer-面试题35-第一个只出现一次的字符
- perl post 上传文件
- 开始实际搭建App测试环境-Appium