mirror of
https://github.com/opencv/opencv.git
synced 2026-07-30 15:53:03 +04:00
Merge branch 4.x
This commit is contained in:
@@ -908,7 +908,22 @@ TYPED_TEST_P(Rect_Test, Overflows) {
|
||||
EXPECT_EQ(R(), R(20, 0, 10, 10) & R(0, num_lowest, 10, 10));
|
||||
EXPECT_EQ(R(), R(num_lowest, 0, 10, 10) & R(0, num_lowest, 10, 10));
|
||||
}
|
||||
REGISTER_TYPED_TEST_CASE_P(Rect_Test, Overflows);
|
||||
|
||||
// See https://github.com/opencv/opencv/issues/26016
|
||||
// Rect_<int>.contains(Point_<float/double>) needs template specialization.
|
||||
// This is test for a point on the edge and its nearest points.
|
||||
template<typename T> T cv_nexttoward(T v, T v2);
|
||||
template<> int cv_nexttoward<int>(int v, int v2) { CV_UNUSED(v); return v2; }
|
||||
template<> float cv_nexttoward<float>(float v, float v2) { return std::nextafter(v,v2); }
|
||||
template<> double cv_nexttoward<double>(double v, double v2) { return std::nexttoward(v,v2); }
|
||||
TYPED_TEST_P(Rect_Test, OnTheEdge) {
|
||||
Rect_<int> rect(0,0,500,500);
|
||||
TypeParam h = static_cast<TypeParam>(rect.height);
|
||||
ASSERT_TRUE ( rect.contains( Point_<TypeParam>(250, cv_nexttoward(h, h - 1))));
|
||||
ASSERT_FALSE( rect.contains( Point_<TypeParam>(250, cv_nexttoward(h, h ))));
|
||||
ASSERT_FALSE( rect.contains( Point_<TypeParam>(250, cv_nexttoward(h, h + 1))));
|
||||
}
|
||||
REGISTER_TYPED_TEST_CASE_P(Rect_Test, Overflows, OnTheEdge);
|
||||
|
||||
typedef ::testing::Types<int, float, double> RectTypes;
|
||||
INSTANTIATE_TYPED_TEST_CASE_P(Negative_Test, Rect_Test, RectTypes);
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
#include "test_precomp.hpp"
|
||||
#include "opencv2/ts/ocl_test.hpp" // T-API like tests
|
||||
#include "opencv2/core/core_c.h"
|
||||
#include <fenv.h>
|
||||
|
||||
namespace opencv_test {
|
||||
namespace {
|
||||
@@ -1087,7 +1087,6 @@ bool CV_OperationsTest::operations1()
|
||||
Size sz(10, 20);
|
||||
if (sz.area() != 200) throw test_excep();
|
||||
if (sz.width != 10 || sz.height != 20) throw test_excep();
|
||||
if (cvSize(sz).width != 10 || cvSize(sz).height != 20) throw test_excep();
|
||||
|
||||
Rect r1(0, 0, 10, 20);
|
||||
Size sz1(5, 10);
|
||||
@@ -1519,7 +1518,7 @@ TEST(Core_sortIdx, regression_8941)
|
||||
);
|
||||
|
||||
cv::Mat result;
|
||||
cv::sortIdx(src.col(0), result, CV_SORT_EVERY_COLUMN | CV_SORT_ASCENDING);
|
||||
cv::sortIdx(src.col(0), result, cv::SORT_EVERY_COLUMN | cv::SORT_ASCENDING);
|
||||
#if 0
|
||||
std::cout << src.col(0) << std::endl;
|
||||
std::cout << result << std::endl;
|
||||
@@ -1598,9 +1597,12 @@ TEST_P(Core_Arith_Regression24163, test_for_ties_to_even)
|
||||
const Mat src2(matSize, matType, Scalar(beta, beta, beta, beta));
|
||||
const Mat result = ( src1 + src2 ) / 2;
|
||||
|
||||
// Expected that default is FE_TONEAREST(Ties to Even).
|
||||
const int rounding = fegetround();
|
||||
fesetround(FE_TONEAREST);
|
||||
const int mean = (int)lrint( static_cast<double>(alpha + beta) / 2.0 );
|
||||
const Mat expected(matSize, matType, Scalar(mean,mean,mean,mean));
|
||||
fesetround(rounding);
|
||||
|
||||
const Mat expected(matSize, matType, Scalar::all(mean));
|
||||
|
||||
// Compare result and extected.
|
||||
ASSERT_EQ(expected.size(), result.size());
|
||||
|
||||
Reference in New Issue
Block a user