- 操作系統: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;
}