OpenCV笔记 (轻量级Matx)

//一个轻量的数值数组,值是分配在栈上的。这个代表一个二维数组。 template class Matx { public:     typedef _Tp value_type;     typedef Matx<_Tp, (m < n ? m : n), 1> diag_type;     typedef Matx<_Tp, m, n> mat_type;     enum { depth = DataDepth<_Tp>::value, rows = m, cols = n, channels = rows*cols,            type = CV_MAKETYPE(depth, channels) };     //! default constructor     Matx();     Matx(_Tp v0); //!< 1x1 matrix     Matx(_Tp v0, _Tp v1); //!< 1x2 or 2x1 matrix     Matx(_Tp v0, _Tp v1, _Tp v2); //!< 1x3 or 3x1 matrix     Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3); //!< 1x4, 2x2 or 4x1 matrix     Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4); //!< 1x5 or 5x1 matrix     Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5); //!< 1x6, 2x3, 3x2 or 6x1 matrix     Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6); //!< 1x7 or 7x1 matrix     Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7); //!< 1x8, 2x4, 4x2 or 8x1 matrix     Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8); //!< 1x9, 3x3 or 9x1 matrix     Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8, _Tp v9); //!< 1x10, 2x5 or 5x2 or 10x1 matrix     Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3,          _Tp v4, _Tp v5, _Tp v6, _Tp v7,          _Tp v8, _Tp v9, _Tp v10, _Tp v11); //!< 1x12, 2x6, 3x4, 4x3, 6x2 or 12x1 matrix     Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3,          _Tp v4, _Tp v5, _Tp v6, _Tp v7,          _Tp v8, _Tp v9, _Tp v10, _Tp v11,          _Tp v12, _Tp v13, _Tp v14, _Tp v15); //!< 1x16, 4x4 or 16x1 matrix     explicit Matx(const _Tp* vals); //!< initialize from a plain array     static Matx all(_Tp alpha);     static Matx zeros();     static Matx ones();     static Matx eye();     static Matx diag(const diag_type& d);     static Matx randu(_Tp a, _Tp b);     static Matx randn(_Tp a, _Tp b);     //! dot product computed with the default precision     _Tp dot(const Matx<_Tp, m, n>& v) const;     //! dot product computed in double-precision arithmetics     double ddot(const Matx<_Tp, m, n>& v) const;     //! convertion to another data type     template<typename T2> operator Matx() const;     //! change the matrix shape     template<int m1, int n1> Matx<_Tp, m1, n1> reshape() const;     //! extract part of the matrix     template<int m1, int n1> Matx<_Tp, m1, n1> get_minor(int i, int j) const;     //! extract the matrix row     Matx<_Tp, 1, n> row(int i) const;     //! extract the matrix column     Matx<_Tp, m, 1> col(int i) const;     //! extract the matrix diagonal     diag_type diag() const;     //! transpose the matrix     Matx<_Tp, n, m> t() const;     //! invert matrix the matrix     Matx<_Tp, n, m> inv(int method=DECOMP_LU) const;     //! solve linear system     template<int l> Matx<_Tp, n, l> solve(const Matx<_Tp, m, l>& rhs, int flags=DECOMP_LU) const;     Vec<_Tp, n> solve(const Vec<_Tp, m>& rhs, int method) const;     //! multiply two matrices element-wise     Matx<_Tp, m, n> mul(const Matx<_Tp, m, n>& a) const;     //! element access     const _Tp& operator ()(int i, int j) const;     _Tp& operator ()(int i, int j);     //! 1D element access     const _Tp& operator ()(int i) const;     _Tp& operator ()(int i);     Matx(const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b, Matx_AddOp);     Matx(const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b, Matx_SubOp);     template<typename _T2> Matx(const Matx<_Tp, m, n>& a, _T2 alpha, Matx_ScaleOp);     Matx(const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b, Matx_MulOp);     template<int l> Matx(const Matx<_Tp, m, l>& a, const Matx<_Tp, l, n>& b, Matx_MatMulOp);     Matx(const Matx<_Tp, n, m>& a, Matx_TOp);     _Tp val[m*n]; //< matrix elements };



来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/fireae/p/3685320.html


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部