opencv Lens Shading Correction c++代码
时间: 2023-07-24 18:31:53 浏览: 125
Opencv Lens Shading Correction(镜头阴影矫正)是一种校正图像因镜头阴影而引起的暗角现象的方法。下面是使用Opencv实现Lens Shading Correction的C++代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat img = imread("input.jpg"); // 读取输入图像
if (img.empty())
{
cout << "Failed to read image!" << endl;
return -1;
}
Mat img_float;
img.convertTo(img_float, CV_32FC3, 1.0 / 255.0); // 转为浮点型
Mat gray;
cvtColor(img_float, gray, COLOR_BGR2GRAY); // 转为灰度图像
Mat kernel = getGaussianKernel(101, 20); // 生成高斯核
Mat kernel2d = kernel * kernel.t(); // 生成二维高斯核
Mat shading;
resize(kernel2d, shading, img_float.size()); // 对高斯核进行插值
Mat corrected = img_float / shading; // 进行矫正
imshow("Input", img);
imshow("Corrected", corrected);
waitKey();
return 0;
}
```
在上述代码中,首先使用imread函数读取输入图像,然后将其转换为浮点型,再转换为灰度图像。接着,通过getGaussianKernel函数生成高斯核,并将其插值到与输入图像大小相同的大小。最后,将输入图像除以阴影图像进行矫正,得到纠正后的输出图像。