From bf4dd569eef59f1327d16b37c4bcb26fdfb2edb0 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Sat, 10 Dec 2022 02:09:16 +0000 Subject: [PATCH] build: fix/eliminate MSVC warnings --- modules/ximgproc/src/find_ellipses.cpp | 16 ++++++++-------- modules/ximgproc/test/test_find_ellipses.cpp | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/modules/ximgproc/src/find_ellipses.cpp b/modules/ximgproc/src/find_ellipses.cpp index 62bf074f7..cde643268 100644 --- a/modules/ximgproc/src/find_ellipses.cpp +++ b/modules/ximgproc/src/find_ellipses.cpp @@ -310,11 +310,11 @@ float EllipseDetectorImpl::getMedianSlope(std::vector &med, Point2f &ce // centers : centroid of the points in med // slopes : vector of the slopes - unsigned pointCount = med.size(); + size_t pointCount = med.size(); // CV_Assert(pointCount >= 2); - unsigned halfSize = pointCount >> 1; - unsigned quarterSize = halfSize >> 1; + size_t halfSize = pointCount >> 1; + size_t quarterSize = halfSize >> 1; std::vector xx, yy; slopes.reserve(halfSize); @@ -333,7 +333,7 @@ float EllipseDetectorImpl::getMedianSlope(std::vector &med, Point2f &ce float den = (p2.x - p1.x); float num = (p2.y - p1.y); - if (den == 0) den = 0.00001f; + den = (std::fabs(den) >= 1e-5) ? den : 0.00001f; // FIXIT: algorithm is not reliable slopes.push_back(num / den); } @@ -1341,7 +1341,7 @@ void EllipseDetectorImpl::preProcessing(Mat1b &image, Mat1b &dp, Mat1b &dn) { } const int CANNY_SHIFT = 15; - const float TAN22_5 = 0.4142135623730950488016887242097; // tan(22.5) = sqrt(2) - 1 + const float TAN22_5 = 0.4142135623730950488016887242097f; // tan(22.5) = sqrt(2) - 1 const int TG22 = (int) (TAN22_5 * (1 << CANNY_SHIFT) + 0.5); // #define CANNY_PUSH(d) *(d) = (uchar)2, *stack_top++ = (d) @@ -1723,8 +1723,8 @@ void EllipseDetectorImpl::findEllipses(Point2f ¢er, VP &edge_i, VP &edge_j, } // find peak in N and K accumulator - int iN = std::distance(accN, std::max_element(accN, accN + ACC_N_SIZE)); - int iK = std::distance(accR, std::max_element(accR, accR + ACC_R_SIZE)) + 90; + int iN = (int)std::distance(accN, std::max_element(accN, accN + ACC_N_SIZE)); + int iK = (int)std::distance(accR, std::max_element(accR, accR + ACC_R_SIZE)) + 90; // recover real values auto fK = float(iK); @@ -1767,7 +1767,7 @@ void EllipseDetectorImpl::findEllipses(Point2f ¢er, VP &edge_i, VP &edge_j, } // find peak in A accumulator - int A = std::distance(accA, std::max_element(accA, accA + ACC_A_SIZE)); + int A = (int)std::distance(accA, std::max_element(accA, accA + ACC_A_SIZE)); auto fA = float(A); // find B value. See Eq [23] in the paper diff --git a/modules/ximgproc/test/test_find_ellipses.cpp b/modules/ximgproc/test/test_find_ellipses.cpp index 9e57d8957..b1fd27bbc 100644 --- a/modules/ximgproc/test/test_find_ellipses.cpp +++ b/modules/ximgproc/test/test_find_ellipses.cpp @@ -23,9 +23,9 @@ TEST(FindEllipsesTest, EllipsesOnly) // position check // target centers - Point2f center_1(226.9, 57.2); - Point2f center_2(393.1, 187.0); - Point2f center_3(208.5, 307.5); + Point2f center_1(226.9f, 57.2f); + Point2f center_2(393.1f, 187.0f); + Point2f center_3(208.5f, 307.5f); // matching for (auto ell: ells) { bool has_match = false;