/// <summary> /// M x N の行列として初期化し、指定した配列からデータをコピーする /// </summary> /// <param name="arr">この行列にコピーされるデータ</param> #else /// <summary> /// Initializes as M x N matrix and copys array data to this /// </summary> /// <param name="arr">Source array data to be copied to this</param> #endif public static MatOfDouble3 FromArray(Vec3d[,] arr) { if (arr == null) { throw new ArgumentNullException("arr"); } if (arr.Length == 0) { throw new ArgumentException("arr.Length == 0"); } int rows = arr.GetLength(0); int cols = arr.GetLength(1); var mat = new MatOfDouble3(rows, cols); mat.SetArray(0, 0, arr); return(mat); }
public static extern int core_Mat_nGetVec3d(IntPtr obj, int row, int col, [In, Out, MarshalAs(UnmanagedType.LPArray)] Vec3d[,] vals, int valsLength);
/// <summary> /// 利用者が別に確保したデータで初期化 /// </summary> /// <param name="rows">2次元配列における行数.</param> /// <param name="cols">2次元配列における列数.</param> /// <param name="data">ユーザデータへのポインタ. data と step パラメータを引数にとる /// 行列コンストラクタは,行列データ領域を確保しません.代わりに,指定のデータを指し示す /// 行列ヘッダを初期化します.つまり,データのコピーは行われません. /// この処理は,非常に効率的で,OpenCV の関数を利用して外部データを処理することができます. /// 外部データが自動的に解放されることはありませんので,ユーザが解放する必要があります.</param> /// <param name="step">行列の各行が占めるバイト数を指定できます. /// この値は,各行の終端にパディングバイトが存在すれば,それも含みます. /// このパラメータが指定されない場合,パディングは存在しないとみなされ, /// 実際の step は cols*elemSize() として計算されます.</param> #else /// <summary> /// constructor for matrix headers pointing to user-allocated data /// </summary> /// <param name="rows">Number of rows in a 2D array.</param> /// <param name="cols">Number of columns in a 2D array.</param> /// <param name="data">Pointer to the user data. Matrix constructors that take data and step parameters do not allocate matrix data. /// Instead, they just initialize the matrix header that points to the specified data, which means that no data is copied. /// This operation is very efficient and can be used to process external data using OpenCV functions. /// The external data is not automatically deallocated, so you should take care of it.</param> /// <param name="step">Number of bytes each matrix row occupies. The value should include the padding bytes at the end of each row, if any. /// If the parameter is missing (set to AUTO_STEP ), no padding is assumed and the actual step is calculated as cols*elemSize() .</param> #endif public MatOfDouble3(int rows, int cols, Vec3d[,] data, long step = 0) : base(rows, cols, ThisType, data, step) { }