C# 在emgu cv中重塑

C# 在emgu cv中重塑,c#,C#,我正在尝试将矩阵重塑为C#中Emgu CV中的向量。Emgu的整形功能在代码中第一次调用时完全正确…但在那之后,它似乎什么都不做!你知道为什么吗? 代码如下: 首次使用 myImg = new Image<Bgr, Byte>(a); myImg2 = myImg.Convert<Gray, Byte>(); Matrix<float> tmp = new Matrix<float>(myImg2.Height, myImg2.Width); C

我正在尝试将矩阵重塑为C#中Emgu CV中的向量。Emgu的整形功能在代码中第一次调用时完全正确…但在那之后,它似乎什么都不做!你知道为什么吗? 代码如下:

首次使用

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);
myImg=新图像(a);
myImg2=myImg.Convert();
矩阵tmp=新矩阵(myImg2.高度,myImg2.宽度);
CvInvoke.cvConvert(myImg2,tmp);
tmp=tmp.Transpose();
重塑矩阵=新矩阵(myImg2.Height*myImg2.Width,1);
重塑向量=tmp.重塑(1,myImg2.高度*myImg2.宽度);
第二次使用

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);
mySketch=新图像(a);
mySketch2=mySketch.Convert();
矩阵tmp_草图=新矩阵(mySketch2.Height,mySketch2.Width);
CvInvoke.cvConvert(mySketch2,tmp_草图);
tmp_sketch=tmp_sketch.Transpose();
矩阵草图_重塑_向量=新矩阵(mySketch2.Height*mySketch2.Width,1);
sketch_Reformed_vect=tmp_sketch.Reforme(1,mySketch2.Height*mySketch2.Width);

提前感谢您的帮助。

看来我弄错了……显然,Emgu结构的“数组”元素(系统提供)没有提供正确的信息,应该检查MCvMat数据……在我的情况下,我的矩阵的“数组”元素在重塑后的大小为144*151(这是完全不正确的),但MCvMat数据显示其行数为21744,Cols为1(这是正确的)