基于OpenCV调整图像的对比度和亮度
生活随笔
收集整理的這篇文章主要介紹了
基于OpenCV调整图像的对比度和亮度
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
亮度和對比度的調整原理
公式原理: new_image = a*image + beta 即
g(x)=αf(x)+β
其中,α>0 , β 通常被稱為 gain 或者 bias 參數,通常這兩個參數可以獨立的分別控制圖像的對比度和亮度。
f(x) 為原圖像的像素值,g(x) 為輸出圖像的像素值。比較直白的表達式為:
g(i,j)=α?f(i,j)+β
其中 i 和 j 表示位于圖像的第 i 行和第 j 列.
一下代碼執行的公式為: g(i,j)=α?f(i,j)+β?
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; double alpha; /*< Simple contrast control */ int beta; /*< Simple brightness control */ int main( int argc, char** argv ) {Mat image = imread( argv[1] );Mat new_image = Mat::zeros( image.size(), image.type() );std::cout<<" Basic Linear Transforms "<<std::endl;std::cout<<"-------------------------"<<std::endl;std::cout<<"* Enter the alpha value [1.0-3.0]: ";std::cin>>alpha;std::cout<<"* Enter the beta value [0-100]: "; std::cin>>beta;for( int y = 0; y < image.rows; y++ ) {for( int x = 0; x < image.cols; x++ ) {for( int c = 0; c < 3; c++ ) {new_image.at<Vec3b>(y,x)[c] = saturate_cast<uchar>( alpha*( image.at<Vec3b>(y,x)[c] ) + beta );}}}namedWindow("Original Image", 1);namedWindow("New Image", 1);imshow("Original Image", image);imshow("New Image", new_image);waitKey();return 0; }結果
- 運行代碼的參數:α=2.2 , β=50 $ ./BasicLinearTransforms lena.jpg Basic Linear Transforms ------------------------- * Enter the alpha value [1.0-3.0]: 2.2 * Enter the beta value [0-100]: 50
-
結果如下:
總結
以上是生活随笔為你收集整理的基于OpenCV调整图像的对比度和亮度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV alpha(权因子) 融合
- 下一篇: OpenCV在图像上画线、矩形、椭圆、多