欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > OpenCV计算摄影学(15)无缝克隆(Seamless Cloning)调整图像颜色的函数colorChange()

OpenCV计算摄影学(15)无缝克隆(Seamless Cloning)调整图像颜色的函数colorChange()

2025/3/9 10:15:17 来源:https://blog.csdn.net/jndingxin/article/details/146066973  浏览:    关键词:OpenCV计算摄影学(15)无缝克隆(Seamless Cloning)调整图像颜色的函数colorChange()
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

cv::colorChange 是 OpenCV 中用于调整图像颜色的函数。它允许你通过乘以不同的系数来独立地改变输入图像中红色、绿色和蓝色通道的强度,从而实现对图像色彩的调整。这个功能对于需要精细控制图像色调的应用非常有用。

函数原型

void cv::colorChange 	
(InputArray  	src,InputArray  	mask,OutputArray  	dst,float  	red_mul = 1.0f,float  	green_mul = 1.0f,float  	blue_mul = 1.0f ) 		

参数

  • 参数src 输入 8 位 3 通道图像‌34。
  • 参数mask 输入 8 位 1 或 3 通道图像‌35。
  • 参数dst 输出与 src 尺寸和类型相同的图像‌34。
  • 参数red_mul 红色通道乘法因子‌4。
  • 参数green_mul 绿色通道乘法因子‌4。
  • 参数blue_mul 蓝色通道乘法因子‌4。

乘法因子范围在 0.5 至 2.5 之间‌

示例代码


#include <iostream>
#include <opencv2/opencv.hpp>int main()
{// 加载图像cv::Mat src = cv::imread("/media/dingxin/data/study/OpenCV/sources/images/jiangnan.jpg");if (src.empty()){std::cerr << "无法加载图像!" << std::endl;return -1;}// 创建全1掩模(处理整个图像)cv::Mat mask = cv::Mat::ones(src.size(), CV_8UC1);// 应用颜色变换(调整参数以增强效果)cv::Mat dst;cv::colorChange(src, mask, dst, 2.5f, 0.1f, 1.0f); // 红通道增强,绿通道减弱// 转换为浮点型计算差异cv::Mat src_f, dst_f;src.convertTo(src_f, CV_32F);dst.convertTo(dst_f, CV_32F);// 计算绝对差异并归一化‌:ml-citation{ref="1,2" data="citationList"}cv::Mat diff_f;cv::absdiff(src_f, dst_f, diff_f);cv::normalize(diff_f, diff_f, 0, 255, cv::NORM_MINMAX); // 关键修改:归一化数据范围‌:ml-citation{ref="1" data="citationList"}// 转换为8位图像cv::Mat diff;diff_f.convertTo(diff, CV_8U);// 增强对比度显示(调整缩放因子)‌:ml-citation{ref="2" data="citationList"}cv::Mat enhanced_diff;cv::convertScaleAbs(diff, enhanced_diff, 5, 0); // alpha=5 增强差异可见性‌:ml-citation{ref="2" data="citationList"}// 显示结果cv::imshow("Original Image", src);cv::imshow("Processed Image", dst);cv::imshow("Difference Image", diff);cv::imshow("Enhanced Difference", enhanced_diff);// 保存结果(建议使用无损格式)‌:ml-citation{ref="5" data="citationList"}cv::imwrite("original.png", src);cv::imwrite("processed.png", dst);cv::imwrite("difference.png", diff);cv::imwrite("enhanced_difference.png", enhanced_diff);cv::waitKey(0);return 0;
}

运行结果

在这里插入图片描述在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词