學習OPENCV3 1 0 2 矩陣的掩膜操作

2021-10-25 22:24:33 字數 3139 閱讀 4026

· cv_assert(myimage.depth() == cv_8u);

該函式用於判斷輸入影象資料為無符號字元格式:

cv_assert函式:當它的表示式為假(flase)時,會丟擲乙個錯誤]:

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

· 獲得當前行指標

const uchar* previous = src.ptr

(row -1)

;const uchar* current = src.ptr

(row)

;const uchar* next = src.ptr

(row +1)

; uchar* output = dst.ptr

(row)

;

· 獲取當前畫素點p(row, col)的畫素值

p

(row, col)

=current[col]

· saturate_cast(-100),返回 0。

· saturate_cast(288),返回255

· saturate_cast(100),返回100

· 這個函式的功能是確保rgb值得範圍在0~255之間

void

filter2d

(inputarray src,

outputarray dst,

int ddepth,

inputarray kernel,

point anchor=

point(-

1,-1

),double delta=0,

int bordertype=border_default )

·src- 輸入影象dst- 輸出影象

·ddepth– 輸出影象的深度,如果該值設為負數則輸出影象和輸入影象有相同的通道數。ddepth可以根據以下羅列的方式設定。

src.depth() = cv_8u, ddepth = -1/cv_16s/cv_32f/cv_64f

src.depth() = cv_16u/cv_16s, ddepth = -1/cv_32f/cv_64f

src.depth() = cv_32f, ddepth = -1/cv_32f/cv_64f

src.depth() = cv_64f, ddepth = -1/cv_64f

·kernel– 卷積核 (or rather a correlation kernel), 為乙個單通道的浮點型矩陣; 對於多通道的彩色影象,如果要對每一通道計算卷積,請使用split()函式將影象分割為多個通道,然後各個通道分別進行卷積處理。

mat kernel =

(mat_<

char

>(3

,3)<<0,

-1,0

,-1,

5,-1

,0,-

1,0)

;filter2d

(src, dst, src.

depth()

, kernel)

;如果用-1代替,就預設和輸入影象一樣。

· 紅色是中心畫素,從上到下,從左到右對每個畫素做同樣的處理操作,得 到最終結果就是對比度提高之後的輸出影象mat物件

;//以下為指標操作

/* int cols = (src.cols-1) * src.channels();

int offsetx = src.channels();

int rows = src.rows;

dst = mat::zeros(src.size(), src.type());

//mat::zeros函式功能:dst的大小,型別和原影象一致

for (int row = 1; row < (rows - 1); row++)

} */

double t =

gettickcount()

; mat kernel =

(mat_<

char

>(3

,3)<<0,

-1,0

,-1,

5,-1

,0,-

1,0)

;filter2d

(src, dst, src.

depth()

, kernel)

;double timeconsume =

(gettickcount()

- t)

/gettickfrequency()

;/*gettickcount():用於返回從作業系統啟動到當前所經的計時週期數

gettickfrequency():用於返回cpu的頻率。get tick frequency。這裡的單位是秒,也就是一秒內重複的次數。

*/printf

("tim consume %.2f\n"

, timeconsume)

;namedwindow

("contrast image demo"

, cv_window_autosize)

;imshow

("contrast image demo"

, dst)

;waitkey(0

);return0;

}

OpenCV學習 子矩陣操作

出處 include highgui.h include cv.h include include using namespace std void main 列印源矩陣 for i 0 i 6 i for j 0 j 6 j cout 在opencv中一般取元素都用定義好的巨集 取mat結構的元素...

OpenCV學習筆記 矩陣的掩碼操作

矩陣的掩碼操作很簡單。其思想是 根據掩碼矩陣 也稱作核 重新計算影象中每個畫素的值。掩碼矩陣中的值表示近鄰畫素值 包括該畫素自身的值 對新畫素值有多大影響。從數學觀點看,我們用自己設定的權值,對畫素鄰域內的值做了個加權平均。思考一下影象對比度增強的問題。我們可以對影象的每個畫素應用下面的公式 上面那...

opencv學習(二) 矩陣的掩碼操作

矩陣的掩碼操作 根據掩碼矩陣 也稱作核 重新計算影象中每個畫素的值。掩碼矩陣中的值表示近鄰畫素值 包括該畫素自身的值 對新畫素值有多大影響。從數學觀點看,我們用自己設定的權值,對畫素鄰域內的值做了個加權平均。對影象的每個畫素應用下面的公式 即 每個畫素 該畫素 5 相鄰上下左右的畫素的和 原始演算法...