opencv矩陣掩膜操作

2021-09-29 14:04:05 字數 1456 閱讀 2956

#include

#include

using

namespace std;

using

namespace cv;

intmain()

imshow

("操作前"

, src)

;double t =

gettickcount()

;/*定義掩膜矩陣(卷積核)

掩膜可以自己定義,不同矩陣效果不同

0 -1 0

-1 5 -1 掩膜可以自己定義,

0 -1 0

增加對比度

如果中心畫素比周圍畫素暗,就更暗

如果中心畫素比周圍畫素亮,就更亮

*/ mat kernel =

(mat_<

char

>(3

,3)<<0,

-1,0

,-1,

5,-1

,0,-

1,0)

;/*影象卷積運算函式

filter2d(輸入影象,輸出影象,影象深度,卷積核,核心基準點,新增畫素值,畫素外推法);

影象深度一般與輸入影象一致

卷積核就是之前定義的掩膜,也叫卷積核

核心基準點可以不寫,預設為cv::point(-1,-1),也就是核心中心

新增畫素值可以不寫,預設為0,該數值大於0影象變亮,小於0影象變暗

畫素外推法可以不寫,預設為4,也就是對全部邊界進行計算

*/filter2d

(src,dst,src.

depth()

,kernel,cv::

point(-

1,-1

),0,

4);/*

gettickcount():返回cpu從某一時刻(如從開機開始)的tick總次數

gettickfrequency():返回cpu一秒鐘的tick次數

*/double time =

(gettickcount()

- t)

/gettickfrequency()

;//獲得執行時間,單位是秒

cout <<

"執行"

<< time <<

"秒"<< endl;

imshow

("操作後"

, dst)

;waitkey(0

);return0;

}

執行結果:

opencv 掩膜操作

saturate cast函式保證運算後全部歸一化在0 255之間,注意上面row,col的移動範圍是很有講究的,的四個邊緣行因為沒有完整的上下左右所以省略,然而在實際應用掩膜操作時候並不用到自己這麼複雜的寫 opencv中提供了乙個filter2d函式。mat kernel mat 3,3 0,1...

OpenCV02 矩陣的掩膜操作

獲得當前行指標const uchar current myimage.ptr row 獲取當前畫素點p row,col 的畫素值p row,col current col 畫素範圍處理saturate cast 在0 255返回正常值,小於0返回0,大於255返回255 掩膜 mask 操作 獲取影...

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....