· 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 相鄰上下左右的畫素的和 原始演算法...