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

}

相关推荐
亿信华辰软件几秒前
构建智慧数据中台,赋能饮料集团全链路数字化转型新引擎
大数据·人工智能·云计算
大模型实验室Lab4AI11 分钟前
西北工业大学 StereoMV2D 突破 3D 物体检测深度难题,精度与效率兼得
人工智能·计算机视觉·目标跟踪
旷野说19 分钟前
打造 36Gbps 超高速本地机器学习开发环境
人工智能·机器学习
陈天伟教授38 分钟前
人工智能应用-机器视觉:绘画大师 04.基于风格迁移的绘画大师
人工智能·神经网络·数码相机·生成对抗网络·dnn
xiaoye-duck39 分钟前
C++ string 类使用超全攻略(上):创建、遍历及容量操作深度解析
c++·stl
爱打代码的小林41 分钟前
opencv基础(轮廓检测、绘制与特征)
人工智能·opencv·计算机视觉
AI浩1 小时前
面向无监督多场景行人重识别的图像-文本知识建模
人工智能·目标检测
csdn_aspnet1 小时前
C++跨平台开发,分享一些用C++实现多平台兼容的工程难题与解决方案
c++
Takoony1 小时前
深度学习多卡训练必须使用偶数张GPU吗?原理深度解析
人工智能·深度学习
翱翔的苍鹰1 小时前
通俗、生动的方式 来讲解“卷积神经网络(CNN)
人工智能·神经网络·cnn