掩膜操作實現影象對比度調整:-紅色是中心畫素,從上到下,從左到右對每個畫素做同樣的處理操作,得到最終結果就是對比度提高之後的輸出影象mat物件
定義掩膜:mat kernel = (mat_(3,3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
filter2d( src, dst, src.depth(), kernel );其中src與dst是mat型別變數、src.depth表示位圖深度,有32、24、8等。
//自定義掩膜操作來提高對比度並顯示結果
void
yanmo
(mat &src)
;int main()
namedwindow
("input image"
,cv_window_autosize);
imshow
("input image"
,src)
; cout <<
"影象的通道值:"
<< src.
channels()
<< endl;
//通過此可以輸出通道數
//自定義掩膜操作來提高對比度並顯示結果
yanmo
(src)
;//使用opencv中的api進行掩膜操作
//在opencv中有這樣功能的api(filter2d)
mat dst2 = mat:
:zeros
(src.
size()
, src.
type()
);mat kernel =
(mat_(3
,3)<<0,
-1,0
,-1,
5,-1
,0,-
1,0)
;//定義掩膜
//filter2d(src, dst2, src.depth(), kernel);//使用filter2d進行掩膜操作,和上面自定義掩膜操作功能相同
表示點陣圖的深度,不知道就-1表示與輸入影象一樣
//測量opencv中filter2d函式執行時間
large_integer t1, t2, tc;
//定義時間變數
queryperformancefrequency
(&tc)
;//能獲取計算機內精確計時器每秒的滴答數。
queryperformancecounter
(&t1)
;//能獲取計算機內精確計時器從開機起的總滴答數
filter2d
(src, dst2, src.
depth()
, kernel)
;queryperformancecounter
(&t2)
;//能獲取計算機內精確計時器從開機起的總滴答數
printf
("filter2d use time:%f\n"
,(t2.quadpart - t1.quadpart)
*1.0
/ tc.quadpart)
;//得到呼叫上面函式filter2d所耗時間
namedwindow
("contrast image demo2"
,cv_window_autosize);
imshow
("contrast image demo2"
, dst2)
;//對比度提高後的影象
waitkey(0
);return0;
}//自定義掩膜操作來提高對比度並顯示結果
void
yanmo
(mat &src)
}namedwindow
("contrast image demo"
,cv_window_autosize);
imshow
("contrast image demo"
, dst)
;//對比度提高後的影象
}
Opencv學習筆記 矩陣的掩膜操作
include include include using namespace cv int main int argc,char argv namedwindow input image cv window autosize imshow input image src int cols src....
opencv矩陣掩膜操作
include include using namespace std using namespace cv intmain imshow 操作前 src double t gettickcount 定義掩膜矩陣 卷積核 掩膜可以自己定義,不同矩陣效果不同 0 1 0 1 5 1 掩膜可以自己定義,...
學習opencv(三 矩陣的掩膜運算)
二維影象儲存在電腦中,可以理解為矩陣,乙個二維陣列,每個位置都會有乙個畫素值。訪問畫素值,就是訪問二維陣列中某個位置的值。訪問的時候,我們先訪問行,後訪問列,通過如下方式,我們獲取行指標,索引i表示第幾行,從0開始計行數。mat.ptr int i 0 獲取畫素矩陣的指標,索引i表示第幾行,從0開始...