2013-03-21 74 views
0

任何人都可以告訴我關於Matrix Reshape(int newChannels,int newRows)函數。 newChannels是什麼意思?我的代碼如下Emgu CV中的Matrix.Reshape()函數

Matrix<Double> A = new Matrix<Double>(4, 4); 
Matrix<Double> reshapeMatrix; 
reshapeMatrix = A.Reshape(1, 16); 

此代碼正常工作。但

reshapeMatrix = A.Reshape(2, 8); 

此代碼運行成功,但reshapeMatrix大小不正確,我不能使用reshapeMatrix數據。

任何人都可以解釋爲什麼會發生這種情況?我如何對任何大小的矩陣使用reshape()函數?

回答

1

正如您所注意到的,Matrix.Reshape將newChannels作爲第一個參數。矩陣可以有多個通道,例如顏色通道(1個用於灰度,3個用於RGB)。 Reshape所做的是重塑矩陣的兩個通道,列和行。

你想用reshapeMatrix = A.Reshape(2, 8);實現的目標可能是重塑矩陣,使其具有2列8行,但仍然是一個顏色通道。或者我錯了?

如果這是你想要達到的目標,做正確的做法是:

reshapeMatrix = A.Reshape(1, 8); 

由於有16元和8行,列數將自動爲2通道的數量仍然保持一個。

reshapeMatrix = A.Reshape(1, 16);工作的原因是因爲您指定應該保留一個顏色通道。而有16行,剩下的唯一選擇是有一列。