我有一个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[]
. 怎么做?