From 54f52139b8e243b5c3ebe3f187c5c1d5abba628d Mon Sep 17 00:00:00 2001 From: Sallee1 <885331635@qq.com> Date: Thu, 1 Jun 2023 22:37:10 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=87=8D=E6=96=B0=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E9=87=8D=E8=AF=95=E7=AE=97=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cvAutoTrack/src/match/surf/SurfMatch.cpp | 29 ++++++++++++++---------- cvAutoTrack/src/match/surf/SurfMatch.h | 5 ++-- cvAutoTrack/src/version/version_tag.tag | 2 +- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/cvAutoTrack/src/match/surf/SurfMatch.cpp b/cvAutoTrack/src/match/surf/SurfMatch.cpp index e006455f..f45ff820 100644 --- a/cvAutoTrack/src/match/surf/SurfMatch.cpp +++ b/cvAutoTrack/src/match/surf/SurfMatch.cpp @@ -140,26 +140,31 @@ void SurfMatch::match() is_success_match = false; return; } + continuity_retry = max_continuity_retry - 1; //全局检测后只局部检测一次 } // 尝试连续匹配,匹配角色附近小范围区域 - for (int retry_times = 1; retry_times <= max_continuity_retry; retry_times++) + bool calc_continuity_is_faile = false; + pos = match_continuity(calc_continuity_is_faile); + + if (!calc_continuity_is_faile) + { + isContinuity = true; + continuity_retry = 0; + } + else { - bool calc_continuity_is_faile = false; - pos = match_continuity(calc_continuity_is_faile); + pos = last_pos; + is_success_match = false; + continuity_retry++; - if (!calc_continuity_is_faile) - { - isContinuity = true; - break; //匹配成功,结束,否则重试 - } - else if (retry_times == max_continuity_retry) + if (continuity_retry >= max_continuity_retry) { - pos = last_pos; isContinuity = false; - is_success_match = false; - return; + continuity_retry = 0; } + + return; } last_pos = pos; is_success_match = true; diff --git a/cvAutoTrack/src/match/surf/SurfMatch.h b/cvAutoTrack/src/match/surf/SurfMatch.h index c96e9483..94ab02b5 100644 --- a/cvAutoTrack/src/match/surf/SurfMatch.h +++ b/cvAutoTrack/src/match/surf/SurfMatch.h @@ -56,7 +56,7 @@ class SurfMatch cv::Point2d pos; - cv::Point2d last_pos; // һƥĵص㣬ƥʧܣ򷵻һεĽֹ˲ + cv::Point2d last_pos; // һƥĵص㣬ƥʧܣһεĽ cv::Rect rect_continuity_map; public: SurfMatch() = default; @@ -72,7 +72,8 @@ class SurfMatch bool isCoveying = false; bool isOnCity = false; - int max_continuity_retry = 3; + int continuity_retry = 0; //ֲƥԴ + const int max_continuity_retry = 3; //Դ bool is_success_match = false; diff --git a/cvAutoTrack/src/version/version_tag.tag b/cvAutoTrack/src/version/version_tag.tag index da4485d2..8c973aa8 100644 --- a/cvAutoTrack/src/version/version_tag.tag +++ b/cvAutoTrack/src/version/version_tag.tag @@ -1 +1 @@ -7.8.83 +7.8.90