- 操作系统:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 编程语言:C++11
算法描述
对选定区域内的梯度场应用适当的非线性变换,然后通过泊松求解器重新积分,可以局部修改图像的表观照明。
cv::illuminationChange 是 OpenCV 中用于调整图像光照效果的一个函数。通过这个函数,你可以修改图像中的光照分布,以达到改善图像视觉效果或者为图像处理任务做准备的目的。
函数原型
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之间。
这对于突出显示曝光不足的前景对象或减少镜面反射非常有用。
代码示例
#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;
}