diff --git a/modules/core/include/opencv2/core/matx.hpp b/modules/core/include/opencv2/core/matx.hpp index 52c63d4ca..19a4d28e4 100644 --- a/modules/core/include/opencv2/core/matx.hpp +++ b/modules/core/include/opencv2/core/matx.hpp @@ -163,6 +163,9 @@ public: //! multiply two matrices element-wise Matx<_Tp, m, n> mul(const Matx<_Tp, m, n>& a) const; + //! divide two matrices element-wise + Matx<_Tp, m, n> div(const Matx<_Tp, m, n>& a) const; + //! element access const _Tp& operator ()(int i, int j) const; _Tp& operator ()(int i, int j); @@ -782,6 +785,12 @@ Matx<_Tp, m, n> Matx<_Tp, m, n>::mul(const Matx<_Tp, m, n>& a) const return Matx<_Tp, m, n>(*this, a, Matx_MulOp()); } +template inline +Matx<_Tp, m, n> Matx<_Tp, m, n>::div(const Matx<_Tp, m, n>& a) const +{ + return Matx<_Tp, m, n>(*this, a, Matx_DivOp()); +} + template inline Matx<_Tp, n, m> Matx<_Tp, m, n>::t() const { @@ -1171,12 +1180,6 @@ Vec<_Tp, m> operator * (const Matx<_Tp, m, n>& a, const Vec<_Tp, n>& b) return (const Vec<_Tp, m>&)(c); } -template static inline -Matx<_Tp, m, n> operator / (const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b) -{ - return Matx<_Tp, m, n>(a, b, Matx_DivOp()); -} - template static inline bool operator == (const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b) { diff --git a/modules/core/test/test_operations.cpp b/modules/core/test/test_operations.cpp index 1fbc4242f..8d3341e59 100644 --- a/modules/core/test/test_operations.cpp +++ b/modules/core/test/test_operations.cpp @@ -899,7 +899,7 @@ bool CV_OperationsTest::TestMatxElementwiseDivison() Matx22f mat(2, 4, 6, 8); Matx22f mat2(2, 2, 2, 2); - Matx22f res = mat / mat2; + Matx22f res = mat.div(mat2); if(res(0, 0) != 1.0) throw test_excep(); if(res(0, 1) != 2.0) throw test_excep();