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;
}
相关推荐
点云SLAM几秒前
Concentrate 英文单词学习
人工智能·英文单词学习·雅思备考·concentrate·集中·浓缩 / 集中物
哈__1 分钟前
CANN轻量化开发实战:快速上手与多场景适配
人工智能
木梯子3 分钟前
全球开发者疯抢的OpenClaw出中文版了!Molili让你一键使用无需部署
人工智能
乂爻yiyao4 分钟前
Vibe Coding 工程化实践
人工智能·ai
lili-felicity7 分钟前
CANN批处理优化技巧:从动态批处理到流水线并行
人工智能·python
一枕眠秋雨>o<14 分钟前
算子之力:解码CANN ops-nn如何重塑昇腾AI计算范式
人工智能
AI科技16 分钟前
原创音乐人运用AI编曲软件,编曲怎么配和弦的声音
人工智能
dazzle18 分钟前
机器学习算法原理与实践-入门(三):使用数学方法实现KNN
人工智能·算法·机器学习
那个村的李富贵19 分钟前
智能炼金术:CANN加速的新材料AI设计系统
人工智能·算法·aigc·cann
凯子坚持 c21 分钟前
CANN 生态新星:`minddata-dataset-engine` 如何加速 AI 数据 pipeline
人工智能