opencv 对彩色图自动gamma矫正c++代码
时间: 2023-07-09 21:37:56 浏览: 124
以下是使用 OpenCV 对彩色图像进行自动 Gamma 矫正的 C++ 代码:
```cpp
#include <opencv2/opencv.hpp>
#include <cmath>
using namespace cv;
Mat gamma_correction(Mat& src, float gamma) {
Mat lut_matrix(1, 256, CV_8UC1);
uchar* ptr = lut_matrix.ptr();
float inv_gamma = 1.0 / gamma;
for (int i = 0; i < 256; i++) {
ptr[i] = (int)(pow((float)i / 255.0, inv_gamma) * 255.0);
}
Mat dst;
LUT(src, lut_matrix, dst);
return dst;
}
int main() {
Mat img = imread("input.jpg");
Mat img_gamma_corrected = gamma_correction(img, 1.5); // gamma value can be adjusted
imshow("Original Image", img);
imshow("Gamma Corrected Image", img_gamma_corrected);
waitKey();
return 0;
}
```
这段代码使用了 OpenCV 的 LUT(查找表)函数,通过计算 Gamma 校正函数的查找表,然后使用 LUT 函数对图像进行 Gamma 校正。Gamma 值可以根据实际情况进行调整。
阅读全文