OpenCV2.4.3 CheatSheet學習(二)

二、矩陣操作(拷貝、洗牌、局部訪問):

      

src.copyTo(dst)

src矩陣中的數據拷貝到dst

 

src.convertTo(dst, type,scale, shift)

縮放並轉換到另外一種數據類型:

dst:目的矩陣

type:需要的輸出矩陣類型,或者更明確的,是輸出矩陣的深度,如果是負值(常用-1)則輸出矩陣和輸入矩陣類型相同

scaleshift:縮放參數,也可以寫爲alphabeta

這個命令也等價於下面的轉換公式:

m(x,y) =saturate_cast(α(*this)(x,y)+β)

 

m.clone()

深度拷貝(啥意思?看《C++Primer》吧)

 

m.reshape(nch,nrows)

重設矩陣的通道數和行數,不拷貝數據。

nch:新的通道數,若爲0則不變

nrows:新的行數,若爲0則不變

 

m.row(i),m.col(i)

創建一個矩陣頭,指向m矩陣的第i/列,O(1)複雜度,不拷貝數據,新的矩陣頭所代表的矩陣和m矩陣的第i/列共享數據。

 

m.rowRange(Range(i1,i2))

m.colRange(Range(j1,j2))

創建一個矩陣頭,指向m矩陣的第i1i2行或者第j1j2列,O(1)複雜度,不拷貝數據。

 

m.diag(i)

創建一個矩陣頭,指向m矩陣的對角線,生成的是一個單列矩陣,O(1)複雜度,不拷貝數據。i=0時表示主對角線,i>0表示下半邊的對角線,i<0表示上半邊的對角線。

 

m(Range(i1,i2),Range(j1,j2))

從矩陣m中的第i1行到第i2行以及第j1列到第j2列所劃定的範圍提取一個小矩陣。

 

m.repeat(ny,nx)

m矩陣貼馬賽克,獲取一個大矩陣,在y方向上重複ny次,在x方向上重複nx次。

 

flip(src,dst,dir)

翻轉矩陣,dir是翻轉方向,0表示沿x軸翻轉,1表示沿y軸翻轉,-1表示沿x軸和y軸都進行翻轉。

 

split(...)

把一個多通道矩陣分解爲幾個單通道矩陣,操作RGB圖像之類的最常用了。

 

merge(...)

和上面的操作相反。

 

mixChannels(...)

上面兩個函數的一般形式。

 

randShuffle(...)

把矩陣中的元素隨機重排

 

 

示例1

Mat imgroi = image(Rect(10,20, 100, 100));

GaussianBlur(imgroi, imgroi,Size(5, 5), 1.2, 1.2);

第一句話取image的一個區域,第二句話對這個區域進行高斯平滑。

 

示例2

m.row(i) +=m.row(j)*alpha;

m矩陣的第j行乘以alpha後加到第i行中。

另外,在Mat::row的介紹中提到,在目前的實現中

A.row(i) =A.row(j);

這樣的語句是不行的,改成

A.row(i) = A.row(j) +0;

或者這樣就可以了:

A.row(j).copyTo(A.row(i));

比較神奇~

 

示例3

Rect r(1, 1, 10,20);

Mat dstroi =dst(Rect(0,10,r.width,r.height));

src(r).convertTo(dstroi,dstroi.type(), 1, 0);

第一句定義一個矩形範圍,第二句從dst矩陣中扣出一個ROI區域,第三句把src矩陣中由r定義的範圍轉換到dstroi中。

 

 

 

三、簡單矩陣操作

 

add(), subtract(),multiply(), divide(), absdiff(), bitwiseand(), bitwiseor(),bitwisexor(), max(), min(), compare()

分別是加減乘除、按位與或異或、最大最小之類的。

 

sum(), mean(), meanStdDev(),norm(), countNonZero(), minMaxLoc()

求和、均值、均值方差、矩陣範數、非零個數、最大最小值。

 

exp(), log(), pow(), sqrt(),cartToPolar(), polarToCart()

指數、對數、乘方、開放、極座標轉換。

 

scaleAdd(), transpose(),gemm(), invert(), solve(), determinant(), trace(), eigen(),SVD

線性組合、轉置、廣義矩陣乘法、矩陣求逆、解線性系統或最小二乘問題、計算行列式、矩陣的跡、計算對稱矩陣的特徵值和特徵向量、奇異值分解

 

dft(), idft(), dct(),idct()

離散傅立葉變換、離散餘弦變換

 

 

sume

20130105

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章