Example #1
0
        /// <summary>
        /// M x N の行列として初期化し、指定した配列からデータをコピーする
        /// </summary>
        /// <param name="arr">この行列にコピーされるデータ</param>
#else
        /// <summary>
        /// Initializes as M x N matrix and copies array data to this
        /// </summary>
        /// <param name="arr">Source array data to be copied to this</param>
#endif
        public static Mat <TElem> FromArray(TElem[,] arr)
        {
            if (arr == null)
            {
                throw new ArgumentNullException(nameof(arr));
            }
            if (arr.Length == 0)
            {
                throw new ArgumentException("arr.Length == 0");
            }

            var rows = arr.GetLength(0);
            var cols = arr.GetLength(1);
            var mat  = new Mat <TElem>(rows, cols);

            if (!mat.SetRectangularArray(arr))
            {
                throw new OpenCvSharpException("Failed to copy pixel data into cv::Mat");
            }
            return(mat);
        }