2014-02-19 3 views
0

Я пытаюсь преобразовать матрицу в вектор в Emgu CV в C#. Функция Reshape от Emgu работает полностью корректно, когда она вызывается в первый раз в коде ... но после этого кажется, что ничего не делает! У вас есть идея, почему? вот код:Reshape in 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); 

Спасибо за Ur помогает заранее.

ответ

0

Хорошо, кажется, что я ошибался ... видимо, элемент «массив» (который предоставляет система) структуры Emgu не дает правильной информации, и нужно проверить данные MCvMat ... в моем случае, Элемент «массив» моей матрицы после изменения формы имеет размер 144 * 151 (что абсолютно неверно), но данные MCvMat показывают, что его строки 21744, а его Cols - 1 (что верно).

Смежные вопросы