我有一个Image<Gray, Byte>大小为 NxN 的 trainImage,我想将其更改为Matrix<float>大小为 的一维 trainMatrix (N^2)x1。
我想做的是打电话给CvInvoke.cvCalvCovarmatrix(). 对于我使用的第一个参数Matrix<Single>[],我将其转换为IntPtr[].
Matrix<Single> avg = new Matrix<float>(7, 1);
Matrix<Single> cov = new Matrix<float>(7, 7);
Matrix<Single>[] input = new Matrix<float>[3];
for (int i = 0; i < 3; i++)
input[i] = new Matrix<float>(7, 1);
IntPtr[] inObjs = Array.ConvertAll<Matrix<Single>, IntPtr>(input, delegate(Matrix<Single> mat) { return mat.Ptr; });
CvInvoke.cvCalcCovarMatrix(inObjs, 3, cov, avg, COVAR_METHOD.CV_COVAR_NORMAL);
但是现在我有Image<Gray, Byte>[]每个图像大小(假设)7x7 的输入。我想我需要先将每个图像转换为Matrix<float>49x1 大小,然后再将其更改为IntPtr[]. 怎么做?