Esempio n. 1
0
        /// <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);
Esempio n. 3
0
        /// <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)
        {
        }