02 opencv矩陣的掩膜操作

2021-10-05 04:52:25 字數 1830 閱讀 1642

獲取影象畫素指標

mat.ptr(int i=0)獲取畫素矩陣的指標,索引i表示第幾行。

獲得當前行指標const uchar* current=myimage.ptr(row);

獲取當前畫素點p(row,col)的畫素值p(row,col)=current[col].

畫素範圍處理

saturate_cast 畫素值大於255則設定為255,畫素值小於0則設定為0,畫素值在0-255之間則數值不變。

掩膜操作

矩陣的掩模操作是重新計算每個畫素的畫素值,通過掩模操作提高影象的對比度。按照如下公式進行掩膜操作。

a(i,j)=5*a(i,j) - [ a(i,j+1) + a(i,j-1) + a(i-1,j) + a(i+1,j) ]

**

#include

#include

#include

using

namespace cv;

intmain

(int argc,

char

** ar**)

namedwindow

("input image"

, cv_window_autosize)

;imshow

("input image"

, src)

;int cols =

(src.cols -1)

*src.

channels()

;int offsetx = src.

channels()

;int rows = src.rows;

dst = mat::

zeros

(src.

size()

, src.

type()

);for(

int row =

1; row < rows -

1; row++)}

namedwindow

("output image"

, cv_window_autosize)

;imshow

("output image"

, dst)

;waitkey(0

);return0;

}

效果圖

函式呼叫filter2d功能

定義掩膜mat kernel = (mat_(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);

filter2d(src, dst, src.depth(), kernel)其中src為原影象,dst為掩膜後的影象,src.depth()為位圖深度。

其使用效果與上面一樣。

mat kernel =

(mat_<

char

>(3

,3)<<0,

-1,0

,-1,

5,-1

,0,-

1,0)

;filter2d

(src, dst, src.

depth()

, kernel)

;

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 using namespace std using namespace cv intmain imshow 操作前 src double t gettickcount 定義掩膜矩陣 卷積核 掩膜可以自己定義,不同矩陣效果不同 0 1 0 1 5 1 掩膜可以自己定義,...

opencv 掩膜操作

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