opencv中矩陣的基本操作:拷貝,轉換,改變尺寸,建立矩陣頭,區域性提取,反轉,分解合併通道,其他一些數學相關的操作。
cv::mat src,dst,m;
1)src.copyto(dst)
把src矩陣中的資料拷貝到dst。
2)m.clone()
深度拷貝。
3)src.convertto(dst, type, scale, shift)
縮放並轉換到另外一種資料型別:
dst:目的矩陣
type:需要的輸出矩陣型別,或者更明確的,是輸出矩陣的深度,如果是負值(常用-1)則輸出矩陣和輸入矩陣型別相同
scale和shift:縮放引數,也可以寫為alpha和beta
這個函式等價於下面的轉換公式:m(x,y) = saturate_cast(α(*this)(x,y)+β)。
4)m.reshape(nch,nrows)
重設矩陣的通道數和行數,不拷貝資料。
nch:新的通道數,若為0則不變
nrows:新的行數,若為0則不變
5)m.row(i), m.col(i)
建立乙個矩陣頭,指向m矩陣的第i行/列,o(1)複雜度,不拷貝資料,新的矩陣頭所代表的矩陣和m矩陣的第i行/列共享資料。
6)m.rowrange(range(i1,i2))
m.colrange(range(j1,j2))
建立乙個矩陣頭,指向m矩陣的第i1到i2行或者第j1到j2列,o(1)複雜度,不拷貝資料。
7)m.diag(i)
建立乙個矩陣頭,指向m矩陣的對角線,生成的是乙個單列矩陣,o(1)複雜度,不拷貝資料。i=0時表示主對角線,i>0表示下半邊的對角線,i<0表示上半邊的對角線。
8)m(range(i1,i2),range(j1,j2))
從矩陣m中的第i1行到第i2行以及第j1列到第j2列所劃定的範圍提取乙個小矩陣。
類似於畫矩形框取區域:mat image(rect(10, 20, 100, 100));
9)m.repeat(ny,nx)
把m矩陣貼馬賽克,獲取乙個大矩陣,在y方向上重複ny次,在x方向上重複nx次。
10)flip(src,dst,dir)
翻轉矩陣,dir是翻轉方向,0表示沿x軸翻轉,1表示沿y軸翻轉,-1表示沿x軸和y軸都進行翻轉。
11)split(...)
把乙個多通道矩陣分解為幾個單通道矩陣,操作rgb影象之類的最常用。
12)merge(...)
和上面的操作相反。
mixchannels(...),上面兩個函式的一般形式。
13)randshuffle(...)
把矩陣中的元素隨機重排。
14)add(), subtract(), multiply(), divide(), absdiff(), bitwiseand(), bitwiseor(), bitwi***or(), max(), min(), compare()
分別是加減乘除、按位與或異或、最大最小之類的。
15)sum(), mean(), meanstddev(), norm(), countnonzero(), minmaxloc()
求和、均值、均值方差、矩陣範數、非零個數、最大最小值。
16)exp(), log(), pow(), sqrt(), carttopolar(), polartocart()
指數、對數、乘方、開放、極座標轉換。
17)scaleadd(), transpose(), gemm(), invert(), solve(), determinant(), trace(), eigen(), svd
線性組合、轉置、廣義矩陣乘法、矩陣求逆、解線性系統或最小二乘問題、計算行列式、矩陣的跡、計算對稱矩陣的特徵值和特徵向量、奇異值分解。
18)dft(), idft(), dct(), idct()
離散傅利葉變換、離散余弦變換。
opencv的矩陣操作
1 建立乙個大小為100 100的3通道2維矩陣,並將其所有資料置0,然後在上面畫乙個圓形並顯示這幅影象 include cv.h include cxcore.h include highgui.h include stdio.h int main return 0 執行結果如下圖 2 建立乙個擁...
Opencv矩陣操作
opencv 矩陣操作 cvmat 2009 06 08 20 10 分配矩陣空間 cvmat cvcreatemat int rows,int cols,int type type 矩陣元素型別.格式為cv s u f c.例如 cv 8uc1 表示8位無符號單通道矩陣,cv 32sc2表示32位...
OpenCv矩陣掩碼操作
定義 矩陣的掩碼操作就是重新計算影象中的每個畫素值。應用 常用於影象平滑,邊緣檢測,特徵分析等區域。方法 第一種使用公式,第二種使用filter2d 函式 include include includeusing namespace cv using namespace std int main n...