OpenCV计算摄影学(16)调整图像光照效果函数illuminationChange()

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

对选定区域内的梯度场应用适当的非线性变换,然后通过泊松求解器重新积分,可以局部修改图像的表观照明。

cv::illuminationChange 是 OpenCV 中用于调整图像光照效果的一个函数。通过这个函数,你可以修改图像中的光照分布,以达到改善图像视觉效果或者为图像处理任务做准备的目的。

函数原型

cpp 复制代码
void cv::illuminationChange 	
(
 	InputArray  	src,
	InputArray  	mask,
	OutputArray  	dst,
	float  	alpha = 0.2f,
	float  	beta = 0.4f 
) 		

参数

  • 参数src 输入8位3通道图像。
  • 参数mask 输入8位1或3通道图像。
  • 参数dst 与src大小和类型相同的输出图像。
  • 参数alpha 值范围在0到2之间。
  • 参数beta 值范围在0到2之间。

这对于突出显示曝光不足的前景对象或减少镜面反射非常有用。

代码示例

cpp 复制代码
#include <opencv2/opencv.hpp>

int main()
{
    // 加载输入图像
    cv::Mat src = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/jiangnan.jpg" );

    // 加载掩膜图像
    cv::Mat mask2 = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/mask.png", cv::IMREAD_GRAYSCALE );

    

    // 确保图像被正确加载
    if ( src.empty() || mask2.empty() )
    {
        std::cout << "图像加载失败,请检查路径是否正确。\n";
        return -1;
    }

    // 调整原始图像的大小
    cv::Mat mask;
    cv::resize(mask2, mask, src.size());

    cv::Mat dst;
    float alpha = 0.2f;  // 根据需要调整
    float beta  = 0.4f;  // 根据需要调整

    // 应用illuminationChange函数
    cv::illuminationChange( src, mask, dst, alpha, beta );

    // 显示结果
    cv::imshow( "Original Image", src );
    cv::imshow( "Illumination Changed", dst );
    cv::waitKey( 0 );
    return 0;
}

运行结果

相关推荐
Moshow郑锴2 小时前
人工智能中的(特征选择)数据过滤方法和包裹方法
人工智能
TY-20252 小时前
【CV 目标检测】Fast RCNN模型①——与R-CNN区别
人工智能·目标检测·目标跟踪·cnn
CareyWYR3 小时前
苹果芯片Mac使用Docker部署MinerU api服务
人工智能
失散134 小时前
自然语言处理——02 文本预处理(下)
人工智能·自然语言处理
mit6.8244 小时前
[1Prompt1Story] 滑动窗口机制 | 图像生成管线 | VAE变分自编码器 | UNet去噪神经网络
人工智能·python
sinat_286945194 小时前
AI应用安全 - Prompt注入攻击
人工智能·安全·prompt
迈火5 小时前
ComfyUI-3D-Pack:3D创作的AI神器
人工智能·gpt·3d·ai·stable diffusion·aigc·midjourney
Moshow郑锴6 小时前
机器学习的特征工程(特征构造、特征选择、特征转换和特征提取)详解
人工智能·机器学习
CareyWYR7 小时前
每周AI论文速递(250811-250815)
人工智能
AI精钢7 小时前
H20芯片与中国的科技自立:一场隐形的博弈
人工智能·科技·stm32·单片机·物联网