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);

}

相关推荐
前进的程序员2 分钟前
2026年IT行业技术发展前瞻性见解
人工智能
汽车仪器仪表相关领域4 分钟前
MTX-A 模拟废气温度(EGT)计 核心特性与车载实操指南
网络·人工智能·功能测试·单元测试·汽车·可用性测试
GeeLark9 分钟前
#请输入你的标签内容
大数据·人工智能·自动化
番茄大王sc10 分钟前
2026年科研AI工具深度测评:文献调研与综述生成领域
论文阅读·人工智能·学习方法·论文笔记
EmbedLinX13 分钟前
C++ 面向对象
开发语言·c++
让学习成为一种生活方式13 分钟前
酿酒葡萄VvOMTs基因家族鉴定及启动子功能分析--文献精读201
人工智能
运维小欣17 分钟前
博睿数据:以Agentic AI驱动智能运维未来
运维·人工智能
weixin_4454023020 分钟前
C++中的命令模式变体
开发语言·c++·算法
Hgfdsaqwr28 分钟前
实时控制系统优化
开发语言·c++·算法
CSDN_RTKLIB28 分钟前
Visual Studio不改变文件编码情况下解决C2001
c++·ide·visual studio