C++ opencv RGB三通道提升亮度

#include <iostream>

#include <iomanip>

#include<opencv2//opencv.hpp>

using namespace std;

using namespace cv;

//函数adjustBrightness用于图片增加亮度

void adjustBrightness(cv::Mat& image, int targetBrightness) {

// 获取图像的通道数

int channels = image.channels();

// 计算调整亮度的因子

float factor = 1.0f;

if (targetBrightness > 0) {

factor = static_cast<float>(targetBrightness) / 255.0f;

}

else if (targetBrightness < 0) {

factor = 255.0f / static_cast<float>(255 - std::abs(targetBrightness));

}

// 遍历图像的每个像素

for (int i = 0; i < image.rows; ++i) {

for (int j = 0; j < image.cols; ++j) {

// 获取像素值

cv::Vec3b& pixel = image.at<cv::Vec3b>(i, j);

// 调整亮度

for (int c = 0; c < channels; ++c) {

if (targetBrightness > 0) {

pixel[c] = cv::saturate_cast<uchar>(pixel[c] * factor);

}

else if (targetBrightness < 0) {

pixel[c] = cv::saturate_cast<uchar>((pixel[c] - 255) * factor + 255);

}

}

}

}

}

void saveimage(std::string file, std::string savefile, int targetBrightness = 400) {

cv::Mat img = imread(file);

adjustBrightness(img, targetBrightness);

imwrite(savefile, img);

}

int main() {

saveimage("C:/Users/lenovo/Desktop/aa/T026_26.jpg",

"C:/Users/lenovo/Desktop/aa/aa.jpg", 800);

}

相关推荐
今晚打老虎1 分钟前
限时回归了
c++
老四啊laosi1 分钟前
[C++进阶] 22. unordered_set && unordered_map使用
c++·unordered_map·unordered_set
高山流水&上善1 分钟前
基于BERT情感分析与多维度可视化的B站热门视频评论分析系统
人工智能·bert·音视频
宵时待雨5 分钟前
C++笔记归纳20:智能指针
开发语言·c++·笔记
jinanwuhuaguo5 分钟前
OpenClaw 2026.4.5 深度解读
android·开发语言·人工智能·kotlin·openclaw
波动几何8 分钟前
AI Agent Skills 体系认知:执行层完整性与 Skill 存在价值
人工智能
chenglin0169 分钟前
智能客服系统
人工智能
小超同学你好9 分钟前
LangGraph 23. 生产环境下智能体如何节约成本:多智能体拆分、提示缓存与查询路由
人工智能·语言模型
轻口味10 分钟前
HarmonyOS 6 AI能力实战1:小艺接入openclaw智能体
人工智能·华为·harmonyos
badhope11 分钟前
Agent智能体全面深入教程:架构、机制与工程实践
人工智能·python·机器人