1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-31 00:03:03 +04:00

Merge branch 4.x

This commit is contained in:
Alexander Smorkalov
2025-07-17 18:23:51 +03:00
140 changed files with 2891 additions and 1208 deletions
@@ -176,4 +176,37 @@ TEST(Imgproc_DistanceTransform, precise_long_dist)
EXPECT_EQ(cv::norm(expected, dist, NORM_INF), 0);
}
TEST(Imgproc_DistanceTransform, ipp_deterministic_corner)
{
setNumThreads(1);
Mat src(1, 4096, CV_8U, Scalar(255)), dist;
src.at<uint8_t>(0, 0) = 0;
distanceTransform(src, dist, DIST_L2, DIST_MASK_PRECISE);
for (int i = 0; i < src.cols; ++i)
{
float expected = static_cast<float>(i);
ASSERT_EQ(expected, dist.at<float>(0, i)) << cv::format("diff: %e", expected - dist.at<float>(0, i));
}
}
TEST(Imgproc_DistanceTransform, ipp_deterministic)
{
setNumThreads(1);
RNG& rng = TS::ptr()->get_rng();
Mat src(1, 800, CV_8U, Scalar(255)), dist;
int p1 = cvtest::randInt(rng) % src.cols;
int p2 = cvtest::randInt(rng) % src.cols;
int p3 = cvtest::randInt(rng) % src.cols;
src.at<uint8_t>(0, p1) = 0;
src.at<uint8_t>(0, p2) = 0;
src.at<uint8_t>(0, p3) = 0;
distanceTransform(src, dist, DIST_L2, DIST_MASK_PRECISE);
for (int i = 0; i < src.cols; ++i)
{
float expected = static_cast<float>(min(min(abs(i - p1), abs(i - p2)), abs(i - p3)));
ASSERT_EQ(expected, dist.at<float>(0, i)) << cv::format("diff: %e", expected - dist.at<float>(0, i));
}
}
}} // namespace