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;
}
相关推荐
鲨莎分不晴2 分钟前
【前沿技术】Offline RL 全解:当强化学习失去“试错”的权利
人工智能·算法·机器学习
工业机器视觉设计和实现16 分钟前
lenet改vgg成功后,我们再改为最简单的resnet
人工智能
jiayong2323 分钟前
Spring AI Alibaba 深度解析(三):实战示例与最佳实践
java·人工智能·spring
XFF不秃头36 分钟前
力扣刷题笔记-全排列
c++·笔记·算法·leetcode
北邮刘老师38 分钟前
【智能体互联协议解析】需要“智能体名字系统”(ANS)吗?
网络·人工智能·大模型·智能体·智能体互联网
梁辰兴1 小时前
AI解码千年甲骨文,指尖触碰的文明觉醒!
人工智能·ai·ai+·文明·甲骨文·ai赋能·梁辰兴
阿里云大数据AI技术1 小时前
# Hologres Dynamic Table:高效增量刷新,构建实时统一数仓的核心利器
人工智能·数据分析
Code Warrior1 小时前
【C++】智能指针的使用及其原理
开发语言·c++
JxWang052 小时前
pandas计算某列每行带有分隔符的数据中包含特定值的次数
人工智能
能源系统预测和优化研究2 小时前
创新点解读:基于非线性二次分解的Ridge-RF-XGBoost时间序列预测(附代码实现)
人工智能·深度学习·算法