mirror of
https://github.com/opencv/opencv.git
synced 2025-06-07 17:44:04 +08:00
Merge pull request #13928 from catree:add_matx_div_operations
This commit is contained in:
commit
966c2191cb
@ -1279,6 +1279,34 @@ Matx<_Tp, m, n> operator * (double alpha, const Matx<_Tp, m, n>& a)
|
|||||||
return Matx<_Tp, m, n>(a, alpha, Matx_ScaleOp());
|
return Matx<_Tp, m, n>(a, alpha, Matx_ScaleOp());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename _Tp, int m, int n> static inline
|
||||||
|
Matx<_Tp, m, n>& operator /= (Matx<_Tp, m, n>& a, float alpha)
|
||||||
|
{
|
||||||
|
for( int i = 0; i < m*n; i++ )
|
||||||
|
a.val[i] = a.val[i] / alpha;
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename _Tp, int m, int n> static inline
|
||||||
|
Matx<_Tp, m, n>& operator /= (Matx<_Tp, m, n>& a, double alpha)
|
||||||
|
{
|
||||||
|
for( int i = 0; i < m*n; i++ )
|
||||||
|
a.val[i] = a.val[i] / alpha;
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename _Tp, int m, int n> static inline
|
||||||
|
Matx<_Tp, m, n> operator / (const Matx<_Tp, m, n>& a, float alpha)
|
||||||
|
{
|
||||||
|
return Matx<_Tp, m, n>(a, 1.f/alpha, Matx_ScaleOp());
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename _Tp, int m, int n> static inline
|
||||||
|
Matx<_Tp, m, n> operator / (const Matx<_Tp, m, n>& a, double alpha)
|
||||||
|
{
|
||||||
|
return Matx<_Tp, m, n>(a, 1./alpha, Matx_ScaleOp());
|
||||||
|
}
|
||||||
|
|
||||||
template<typename _Tp, int m, int n> static inline
|
template<typename _Tp, int m, int n> static inline
|
||||||
Matx<_Tp, m, n> operator - (const Matx<_Tp, m, n>& a)
|
Matx<_Tp, m, n> operator - (const Matx<_Tp, m, n>& a)
|
||||||
{
|
{
|
||||||
|
@ -69,6 +69,8 @@ protected:
|
|||||||
bool TestVec();
|
bool TestVec();
|
||||||
bool TestMatxMultiplication();
|
bool TestMatxMultiplication();
|
||||||
bool TestMatxElementwiseDivison();
|
bool TestMatxElementwiseDivison();
|
||||||
|
bool TestDivisionByValue();
|
||||||
|
bool TestInplaceDivisionByValue();
|
||||||
bool TestMatMatxCastSum();
|
bool TestMatMatxCastSum();
|
||||||
bool TestSubMatAccess();
|
bool TestSubMatAccess();
|
||||||
bool TestExp();
|
bool TestExp();
|
||||||
@ -976,6 +978,50 @@ bool CV_OperationsTest::TestMatxElementwiseDivison()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CV_OperationsTest::TestDivisionByValue()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Matx22f mat(2, 4, 6, 8);
|
||||||
|
float alpha = 2.f;
|
||||||
|
|
||||||
|
Matx22f res = mat / alpha;
|
||||||
|
|
||||||
|
if(res(0, 0) != 1.0) throw test_excep();
|
||||||
|
if(res(0, 1) != 2.0) throw test_excep();
|
||||||
|
if(res(1, 0) != 3.0) throw test_excep();
|
||||||
|
if(res(1, 1) != 4.0) throw test_excep();
|
||||||
|
}
|
||||||
|
catch(const test_excep&)
|
||||||
|
{
|
||||||
|
ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_OUTPUT);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool CV_OperationsTest::TestInplaceDivisionByValue()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Matx22f mat(2, 4, 6, 8);
|
||||||
|
float alpha = 2.f;
|
||||||
|
|
||||||
|
mat /= alpha;
|
||||||
|
|
||||||
|
if(mat(0, 0) != 1.0) throw test_excep();
|
||||||
|
if(mat(0, 1) != 2.0) throw test_excep();
|
||||||
|
if(mat(1, 0) != 3.0) throw test_excep();
|
||||||
|
if(mat(1, 1) != 4.0) throw test_excep();
|
||||||
|
}
|
||||||
|
catch(const test_excep&)
|
||||||
|
{
|
||||||
|
ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_OUTPUT);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool CV_OperationsTest::TestVec()
|
bool CV_OperationsTest::TestVec()
|
||||||
{
|
{
|
||||||
@ -1204,6 +1250,12 @@ void CV_OperationsTest::run( int /* start_from */)
|
|||||||
if (!TestMatxElementwiseDivison())
|
if (!TestMatxElementwiseDivison())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (!TestDivisionByValue())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!TestInplaceDivisionByValue())
|
||||||
|
return;
|
||||||
|
|
||||||
if (!TestMatMatxCastSum())
|
if (!TestMatMatxCastSum())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user