mirror of
https://github.com/opencv/opencv.git
synced 2026-07-30 07:43:03 +04:00
Merge pull request #13586 from eightco:Core_bugfix3
* Add Operator override for multi-channel Mat with literal constant. * simple test * Operator overloading channel constraint for primitive types * fix some test for #13586
This commit is contained in:
committed by
Alexander Alekhin
parent
b9496f8d9d
commit
3721c8bb06
@@ -256,6 +256,14 @@ Matx<_Tp, n, l> Matx<_Tp, m, n>::solve(const Matx<_Tp, m, l>& rhs, int method) c
|
||||
template<typename _Tp, int m, int n> static inline A& operator op (A& a, const Matx<_Tp,m,n>& b) { cvop; return a; } \
|
||||
template<typename _Tp, int m, int n> static inline const A& operator op (const A& a, const Matx<_Tp,m,n>& b) { cvop; return a; }
|
||||
|
||||
#define CV_MAT_AUG_OPERATOR_FOR1CHANNEL(op, cvop, A) \
|
||||
CV_MAT_AUG_OPERATOR1(op, CV_Assert(a.channels() == 1); cvop, A, double) \
|
||||
CV_MAT_AUG_OPERATOR1(op, CV_Assert(a.channels() == 1); cvop, const A, double)
|
||||
|
||||
#define CV_MAT_AUG_OPERATOR_T_FOR1CHANNEL(op, cvop, A) \
|
||||
template<typename _Tp> CV_MAT_AUG_OPERATOR1(op, CV_Assert(a.channels() == 1); cvop, A, double) \
|
||||
template<typename _Tp> CV_MAT_AUG_OPERATOR1(op, CV_Assert(a.channels() == 1); cvop, const A, double)
|
||||
|
||||
CV_MAT_AUG_OPERATOR (+=, cv::add(a,b,a), Mat, Mat)
|
||||
CV_MAT_AUG_OPERATOR (+=, cv::add(a,b,a), Mat, Scalar)
|
||||
CV_MAT_AUG_OPERATOR_T(+=, cv::add(a,b,a), Mat_<_Tp>, Mat)
|
||||
@@ -263,6 +271,8 @@ CV_MAT_AUG_OPERATOR_T(+=, cv::add(a,b,a), Mat_<_Tp>, Scalar)
|
||||
CV_MAT_AUG_OPERATOR_T(+=, cv::add(a,b,a), Mat_<_Tp>, Mat_<_Tp>)
|
||||
CV_MAT_AUG_OPERATOR_TN(+=, cv::add(a,Mat(b),a), Mat)
|
||||
CV_MAT_AUG_OPERATOR_TN(+=, cv::add(a,Mat(b),a), Mat_<_Tp>)
|
||||
CV_MAT_AUG_OPERATOR_FOR1CHANNEL (+=, cv::add(a, b, a), Mat)
|
||||
CV_MAT_AUG_OPERATOR_T_FOR1CHANNEL(+=, cv::add(a, b, a), Mat_<_Tp>)
|
||||
|
||||
CV_MAT_AUG_OPERATOR (-=, cv::subtract(a,b,a), Mat, Mat)
|
||||
CV_MAT_AUG_OPERATOR (-=, cv::subtract(a,b,a), Mat, Scalar)
|
||||
@@ -271,6 +281,8 @@ CV_MAT_AUG_OPERATOR_T(-=, cv::subtract(a,b,a), Mat_<_Tp>, Scalar)
|
||||
CV_MAT_AUG_OPERATOR_T(-=, cv::subtract(a,b,a), Mat_<_Tp>, Mat_<_Tp>)
|
||||
CV_MAT_AUG_OPERATOR_TN(-=, cv::subtract(a,Mat(b),a), Mat)
|
||||
CV_MAT_AUG_OPERATOR_TN(-=, cv::subtract(a,Mat(b),a), Mat_<_Tp>)
|
||||
CV_MAT_AUG_OPERATOR_FOR1CHANNEL (-=, cv::subtract(a, b, a), Mat)
|
||||
CV_MAT_AUG_OPERATOR_T_FOR1CHANNEL(-=, cv::subtract(a, b, a), Mat_<_Tp>)
|
||||
|
||||
CV_MAT_AUG_OPERATOR (*=, cv::gemm(a, b, 1, Mat(), 0, a, 0), Mat, Mat)
|
||||
CV_MAT_AUG_OPERATOR_T(*=, cv::gemm(a, b, 1, Mat(), 0, a, 0), Mat_<_Tp>, Mat)
|
||||
@@ -295,6 +307,8 @@ CV_MAT_AUG_OPERATOR_T(&=, cv::bitwise_and(a,b,a), Mat_<_Tp>, Scalar)
|
||||
CV_MAT_AUG_OPERATOR_T(&=, cv::bitwise_and(a,b,a), Mat_<_Tp>, Mat_<_Tp>)
|
||||
CV_MAT_AUG_OPERATOR_TN(&=, cv::bitwise_and(a, Mat(b), a), Mat)
|
||||
CV_MAT_AUG_OPERATOR_TN(&=, cv::bitwise_and(a, Mat(b), a), Mat_<_Tp>)
|
||||
CV_MAT_AUG_OPERATOR_FOR1CHANNEL (&=, cv::bitwise_and(a, b, a), Mat)
|
||||
CV_MAT_AUG_OPERATOR_T_FOR1CHANNEL(&=, cv::bitwise_and(a, b, a), Mat_<_Tp>)
|
||||
|
||||
CV_MAT_AUG_OPERATOR (|=, cv::bitwise_or(a,b,a), Mat, Mat)
|
||||
CV_MAT_AUG_OPERATOR (|=, cv::bitwise_or(a,b,a), Mat, Scalar)
|
||||
@@ -303,6 +317,8 @@ CV_MAT_AUG_OPERATOR_T(|=, cv::bitwise_or(a,b,a), Mat_<_Tp>, Scalar)
|
||||
CV_MAT_AUG_OPERATOR_T(|=, cv::bitwise_or(a,b,a), Mat_<_Tp>, Mat_<_Tp>)
|
||||
CV_MAT_AUG_OPERATOR_TN(|=, cv::bitwise_or(a, Mat(b), a), Mat)
|
||||
CV_MAT_AUG_OPERATOR_TN(|=, cv::bitwise_or(a, Mat(b), a), Mat_<_Tp>)
|
||||
CV_MAT_AUG_OPERATOR_FOR1CHANNEL (|=, cv::bitwise_or(a, b, a), Mat)
|
||||
CV_MAT_AUG_OPERATOR_T_FOR1CHANNEL(|=, cv::bitwise_or(a, b, a), Mat_<_Tp>)
|
||||
|
||||
CV_MAT_AUG_OPERATOR (^=, cv::bitwise_xor(a,b,a), Mat, Mat)
|
||||
CV_MAT_AUG_OPERATOR (^=, cv::bitwise_xor(a,b,a), Mat, Scalar)
|
||||
@@ -311,7 +327,11 @@ CV_MAT_AUG_OPERATOR_T(^=, cv::bitwise_xor(a,b,a), Mat_<_Tp>, Scalar)
|
||||
CV_MAT_AUG_OPERATOR_T(^=, cv::bitwise_xor(a,b,a), Mat_<_Tp>, Mat_<_Tp>)
|
||||
CV_MAT_AUG_OPERATOR_TN(^=, cv::bitwise_xor(a, Mat(b), a), Mat)
|
||||
CV_MAT_AUG_OPERATOR_TN(^=, cv::bitwise_xor(a, Mat(b), a), Mat_<_Tp>)
|
||||
CV_MAT_AUG_OPERATOR_FOR1CHANNEL (^=, cv::bitwise_xor(a, b, a), Mat)
|
||||
CV_MAT_AUG_OPERATOR_T_FOR1CHANNEL(^=, cv::bitwise_xor(a, b, a), Mat_<_Tp>)
|
||||
|
||||
#undef CV_MAT_AUG_OPERATOR_T_FOR1CHANNEL
|
||||
#undef CV_MAT_AUG_OPERATOR_FOR1CHANNEL
|
||||
#undef CV_MAT_AUG_OPERATOR_TN
|
||||
#undef CV_MAT_AUG_OPERATOR_T
|
||||
#undef CV_MAT_AUG_OPERATOR
|
||||
|
||||
Reference in New Issue
Block a user