OpenCV 伽马校正函数gammaCorrection()
- 操作系统:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 编程语言:C++11
算法描述
该函数用于对输入图像应用伽马校正(Gamma Correction),这是一种非线性的图像处理技术,主要用于调整图像的亮度和对比度。
给定一个输入的 BGR 或灰度图像以及一个常数 gamma,对图像在 [0, 255] 区间上应用幂律变换(即伽马校正),并返回结果图像。
函数原型
void cv::intensity_transform::gammaCorrection
(const Mat input,Mat & output,const float gamma
)
参数
- input:输入BGR或灰度图像。
- output:伽马校正后的结果图像。
- gamma:在公式 c*r^gamma中的常数,其中 r 是像素值。
示例代码
#include <opencv2/intensity_transform.hpp>
#include <opencv2/opencv.hpp>void applyGammaCorrection( const cv::Mat& input, cv::Mat& output, float gamma )
{// 创建查找表cv::Mat lookUpTable( 1, 256, CV_8U );uchar* p = lookUpTable.ptr();for ( int i = 0; i < 256; ++i )p[ i ] = cv::saturate_cast< uchar >( pow( i / 255.0, gamma ) * 255.0 );// 应用查找表cv::LUT( input, lookUpTable, output );
}int main()
{// 读取图像cv::Mat img = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png" );if ( img.empty() ){std::cerr << "无法加载图像!" << std::endl;return -1;}cv::Mat result;// 设置伽马值float gamma = 1.5f; // 你可以根据需要调整这个值// 使用 OpenCV 提供的 gammaCorrection 函数cv::intensity_transform::gammaCorrection( img, result, gamma );// 显示原图和处理后的图像cv::imshow( "Original Image", img );cv::imshow( "Gamma Corrected Image", result );cv::waitKey( 0 );return 0;
}