C++【OpenCV】图片亮度色度归一化

cpp 复制代码
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
	Mat image = imread("SrcMF.jpg");
     // 灰度、Gamma归一化亮度
	cv::Mat m_gray;
	cv::cvtColor(image, m_gray, cv::COLOR_BGR2GRAY);
	float Gamma = log(128.0 / 255.0) / log(cv::mean(m_gray)[0] / 255.0);
	cv::Mat lookUpTable = cv::Mat::zeros(cv::Size(1, 256), CV_8UC1);
	for (int i = 0; i < 256; i++)
		lookUpTable.at<uchar>(0, i) = pow(i / 255.0, Gamma) * 255.0;
	cv::LUT(image, lookUpTable, image);
	imwrite(path + "\\06.jpg", image);

     //转到LAB,统一色度
	Mat result;
	cv::Mat m_lab;
	cv::cvtColor(image, m_lab, cv::COLOR_BGR2Lab);
	std::vector<cv::Mat> split_lab;
	cv::split(m_lab, split_lab);
	cv::convertScaleAbs(split_lab[1], split_lab[1], 128.0 / cv::mean(split_lab[1])[0], 0.0);
	cv::convertScaleAbs(split_lab[2], split_lab[2], 128.0 / cv::mean(split_lab[2])[0], 0.0);
	cv::merge(split_lab, result);
	cv::cvtColor(result, result, cv::COLOR_Lab2BGR);
	imwrite("08.jpg", result);

	return 0;
}
相关推荐
mit6.8242 分钟前
[Vroom] 位置与矩阵 | 路由集成 | 抽象,解耦与通信
c++·人工智能·算法
ChuHsiang2 分钟前
【C++】模板(二)
c++
Brian Xia8 分钟前
深度学习入门教程(三)- 线性代数教程
人工智能·深度学习·线性代数
lishaoan7713 分钟前
用TensorFlow进行逻辑回归(一)
人工智能·tensorflow·逻辑回归·分类器
302AI17 分钟前
全面刷新榜单,“全球最强 AI” Grok 4 评测:真实实力与局限性解析
人工智能·llm
强盛小灵通专卖员32 分钟前
【中文核心期刊推荐】中国农业科技导报
人工智能·计算机视觉·期刊·中文核心期刊·导师·小论文
zskj_zhyl39 分钟前
科技向善:七彩喜康养平台如何用智能技术弥合“数字鸿沟”?
人工智能·科技
Edingbrugh.南空1 小时前
Flink 2.0 DataStream算子全景
人工智能·flink
bin91531 小时前
飞算 JavaAI:开启 Java 开发新时代
java·人工智能