open cv對比度與亮度調節

2021-10-04 20:23:23 字數 1770 閱讀 7642

影象變換可以看作如下

畫素變換-點操作

調整影象亮度和對比度屬於畫素變換-點操作

鄰域操作-區域 影象卷積 梯度計算

g(i,j)=a*f(i,j)+b其中a>0,b是增益變數

重要的api

mat new image =mat:zeros( image,size(), image.type();

建一張跟原影象大小和型別一致的空白影象、畫素值初始化為0

saturate_ castmat.at(y,x)[index]=value給每個通道的每個畫素點賦值

亮度是的明亮程度超過80%影象開始發白

對比度是顏色之間的對比程度 對比度越大 個顏色之間的分別越明顯特別是黑白之間

超過85%過於艷麗

#include

#include

#include

using

namespace cv;

using

namespace std;

intmain()

//畫素點 位操作

char input_win=

"input image"

;// 設定乙個名為input image的字串 來做src的視窗顯示

namedwindow

(input_win,cv_window_autosize)

;imshow

(input_win,src)

;//直接顯示這條字串到src視窗

int height = src.rows;

int width = src.cols;

dst = mat::

zeros

(src.

size()

, src.

type()

);float alpha =1;

//第一通道賦值 越低越暗 越高越亮 對比度調節

float beta =30;

//第二通道賦值 越低越暗 越高越亮 亮度調節

/* α > 1會擴大兩個畫素值之間的差值,從而提高了影象的對比度,

反之降低影象對比度;β \betaβ值可以用來增大的亮度,

值越大,亮度增加越明顯。

*/ mat m1;

//若想進一步提高精度,可以使使讀取的畫素的資料型別都為float型別,

//即vec3f,這裡需要乙個轉換函式

src.

convertto

(m1, cv_32f)

;//轉換為32位浮點型的矩陣 對比度亮度調節精度更大

// cvtcolor(src,dst,cv_bgr2gray);

for(

int row =

0; row < height; row++

)else

if(dst.

channels()

==1)//灰度圖}}

char output_tittle=

"output and brightness change demo"

;namedwindow

(output_tittle,cv_window_autosize)

;imshow

(output_tittle, dst)

;waitkey(0

);return0;

}

亮度 對比度 飽和度 灰度

亮度是指畫面的明亮程度,單位是堪德拉每平公尺 cd m2 或稱nits,也就是每平方公尺分之燭光。亮度對應由背光電壓控制 對比度是乙個亮度的比值,定義是 在暗室中,白色畫面 最亮時 下的亮度除以黑色畫面 最暗時 下的亮度。更精準地說,對比度就是把白色訊號在100 和0 的飽和度相減,再除以用lux ...

色調 色相 飽和度 對比度 亮度

對比度 對比度指不同顏色之間的差別。對比度越大,不同顏色之間的反差越大,即所謂黑白分明,對比度過大,影象就會顯得很刺眼。對比度越小,不同顏色之間的反差就越小。亮度 亮度指照射在景物或影象上光線的明暗程度。影象亮度增加時,就會顯得耀眼或刺眼,亮度越小時,影象就會顯得灰暗。色調 色調是各種影象色彩模式下...

自動對比度的opencv實現

在 一文中,作者給出了 自動對比度 的實現方法,非常nice 實際實現過程中,我發現文中有 dim histred 255 這樣的定義。一般來說,通道是0 255乙個256階的吧,如果不是語法的不同,應該是乙個bug.mat autocontrost mat matface double histg...