diff --git a/modules/core/include/opencv2/core/operations.hpp b/modules/core/include/opencv2/core/operations.hpp index 2c38469446..082fef4440 100644 --- a/modules/core/include/opencv2/core/operations.hpp +++ b/modules/core/include/opencv2/core/operations.hpp @@ -256,14 +256,6 @@ Matx<_Tp, n, l> Matx<_Tp, m, n>::solve(const Matx<_Tp, m, l>& rhs, int method) c template static inline A& operator op (A& a, const Matx<_Tp,m,n>& b) { cvop; return a; } \ template 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 CV_MAT_AUG_OPERATOR1(op, CV_Assert(a.channels() == 1); cvop, A, double) \ - template 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) @@ -271,8 +263,6 @@ 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) @@ -281,8 +271,6 @@ 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) @@ -307,8 +295,6 @@ 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) @@ -317,8 +303,6 @@ 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) @@ -327,11 +311,7 @@ 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 diff --git a/modules/core/test/test_mat.cpp b/modules/core/test/test_mat.cpp index 14174e560e..f69140bb8c 100644 --- a/modules/core/test/test_mat.cpp +++ b/modules/core/test/test_mat.cpp @@ -1644,43 +1644,7 @@ TEST(Mat, regression_10507_mat_setTo) } } -template -static void OverloadingTestFor1Channel_EachOp(const MatType& m, Type c) -{ - EXPECT_ANY_THROW(m += c); - EXPECT_ANY_THROW(m -= c); - EXPECT_ANY_THROW(m &= c); - EXPECT_ANY_THROW(m |= c); - EXPECT_ANY_THROW(m ^= c); -} - -template -static void OverloadingTestFor1Channel_EachType(const MatType& m) -{ - OverloadingTestFor1Channel_EachOp< MatType, bool> (m, true); - OverloadingTestFor1Channel_EachOp< MatType, char> (m, (char)1); - OverloadingTestFor1Channel_EachOp< MatType, unsigned char> (m, (unsigned char)1); - OverloadingTestFor1Channel_EachOp< MatType, short> (m, (short)1); - OverloadingTestFor1Channel_EachOp< MatType, unsigned short> (m, (unsigned short)1); - OverloadingTestFor1Channel_EachOp< MatType, int> (m, 1); - OverloadingTestFor1Channel_EachOp< MatType, unsigned int> (m, (unsigned int)1); - OverloadingTestFor1Channel_EachOp< MatType, long> (m, (long)1); - OverloadingTestFor1Channel_EachOp< MatType, unsigned long> (m, (unsigned long)1); - OverloadingTestFor1Channel_EachOp< MatType, float> (m, 1.0f); - OverloadingTestFor1Channel_EachOp< MatType, double> (m, 1.0); -} - -TEST(Mat, regression_13586) -{ - Mat m1(2, 2, CV_8UC3, Scalar::all(1)); - OverloadingTestFor1Channel_EachType(m1); - Mat4b m2(2, 2); - m2.setTo(0); - OverloadingTestFor1Channel_EachType(m2); -} - #ifdef CV_CXX_STD_ARRAY - TEST(Core_Mat_array, outputArray_create_getMat) { cv::Mat_ src_base(5, 1);