2014-02-19 67 views
0

我正在嘗試將矩陣轉換爲Emgu CV中C#中的一個向量。 Emgu的Reshape函數在代碼中首次調用時完全正確,但在此之後,它看起來像什麼都不做!你知道這是爲什麼嗎? 這裏是代碼:在emgu cv中重塑

首先使用

myImg = new Image<Bgr, Byte>(a); 
myImg2 = myImg.Convert<Gray, Byte>(); 

Matrix<float> tmp = new Matrix<float>(myImg2.Height, myImg2.Width); 
CvInvoke.cvConvert(myImg2, tmp); 
tmp = tmp.Transpose(); 
Matrix<float> reshaped_vect = new Matrix<float>(myImg2.Height * myImg2.Width, 1); 
reshaped_vect = tmp.Reshape(1, myImg2.Height * myImg2.Width); 

第二次使用

mySketch = new Image<Bgr, Byte>(a); 
mySketch2 = mySketch.Convert<Gray, Byte>(); 

Matrix<float> tmp_sketch = new Matrix<float>(mySketch2.Height, mySketch2.Width); 
CvInvoke.cvConvert(mySketch2, tmp_sketch); 
tmp_sketch = tmp_sketch.Transpose(); 
Matrix<float> sketch_reshaped_vect = new Matrix<float>(mySketch2.Height * mySketch2.Width, 1); 
sketch_reshaped_vect = tmp_sketch.Reshape(1, mySketch2.Height * mySketch2.Width); 

預先感謝烏爾幫助。

回答

0

好吧,似乎我錯了......顯然,Emgu結構的「數組」元素(系統提供的)沒有提供正確的信息,應該檢查MCvMat數據...在我的情況中,我的矩陣的「數組」元素在重塑後的大小爲144 * 151(這完全不正確),但MCvMat數據顯示其行數爲21744,列數爲1(這是正確的)。