public static Vector3 ReadVector3(this MatOfPoint3f vectorArrayMat, int index)
        {
            switch (vectorArrayMat.depth())
            {
            case CvType.CV_64F:
                vectorArrayMat.get(index, 0, _temp3d);
                return(new Vector3((float)_temp3d[0], (float)_temp3d[1], (float)_temp3d[2]));

            case CvType.CV_32F:
                vectorArrayMat.get(index, 0, _temp3f);
                return(new Vector3(_temp3f[0], _temp3f[1], _temp3f[2]));
            }
            return(Vector3.zero);
        }
        public static void WriteVector3(this MatOfPoint3f vectorArrayMat, Vector3 vector, int index)
        {
            switch (vectorArrayMat.depth())
            {
            case CvType.CV_64F:
                _temp3d[0] = vector.x;
                _temp3d[1] = vector.y;
                _temp3d[2] = vector.z;
                vectorArrayMat.put(index, 0, _temp3d);
                break;

            case CvType.CV_32F:
                _temp3f[0] = vector.x;
                _temp3f[1] = vector.y;
                _temp3f[2] = vector.z;
                vectorArrayMat.put(index, 0, _temp3f);
                break;
            }
        }