サイズがNxNのImage<Gray, Byte>
trainImageがあり、サイズがの1DtrainMatrixに変更したいと思いMatrix<float>
ます(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[]
。どうやってするの?