OpenCV计算摄影学(16)调整图像光照效果函数illuminationChange()
- 操作系统: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;
}