opencv 自动gamma矫正c++代码
时间: 2023-07-09 22:37:55 浏览: 170
下面是使用C++实现自动Gamma矫正的OpenCV代码:
```c++
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("input.jpg");
Mat gray;
cvtColor(img, gray, COLOR_BGR2GRAY);
double gamma = 0.5;
double invGamma = 1.0 / gamma;
Mat table(1, 256, CV_8U);
uchar* p = table.ptr();
for (int i = 0; i < 256; i++)
{
p[i] = static_cast<uchar>(pow(i / 255.0, invGamma) * 255.0);
}
Mat result;
LUT(gray, table, result);
imshow("original", gray);
imshow("gamma corrected", result);
waitKey(0);
destroyAllWindows();
return 0;
}
```
这段代码与Python实现类似,只是语法稍有不同。需要注意的是,在C++中需要使用pow函数进行指数计算,而在Python中可以直接使用**操作符。另外,由于C++不支持numpy数组,因此需要使用Mat来存储和操作图像。
阅读全文