From 8bf2e48675995d5743dda6cbbc9ee484cf7ded0d Mon Sep 17 00:00:00 2001 From: MistEO Date: Sun, 1 Jan 2023 19:30:57 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E8=87=AA=E5=8A=A8=E6=88=98=E6=96=97?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=86=E4=B8=80=E4=BA=9B=E6=9C=89=E7=9A=84?= =?UTF-8?q?=E6=B2=A1=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MaaCore/Task/BattleHelper.cpp | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/MaaCore/Task/BattleHelper.cpp b/src/MaaCore/Task/BattleHelper.cpp index 8ee8ca1e20..f8c9c85250 100644 --- a/src/MaaCore/Task/BattleHelper.cpp +++ b/src/MaaCore/Task/BattleHelper.cpp @@ -138,18 +138,10 @@ bool asst::BattleHelper::update_deployment(bool init, const cv::Mat& reusable) } m_cur_deployment_opers.clear(); - const double threshold = Task.get("BattleAvatarData")->templ_threshold; - const double cooling_threshold = Task.get("BattleAvatarCoolingData")->templ_threshold; - const auto& cooling_mask_range = Task.get("BattleAvatarCoolingData")->mask_range; - - auto cur_opers = oper_analyzer.get_opers(); - std::vector unknown_opers; - auto remove_cooling_from_battlefield = [&](const DeploymentOper& oper) { if (!oper.cooling) { return; } - auto iter = m_battlefield_opers.find(oper.name); if (iter == m_battlefield_opers.end()) { return; @@ -159,18 +151,22 @@ bool asst::BattleHelper::update_deployment(bool init, const cv::Mat& reusable) m_battlefield_opers.erase(iter); }; + auto cur_opers = oper_analyzer.get_opers(); + std::vector unknown_opers; + for (auto& oper : cur_opers) { - MatchImageAnalyzer avatar_analyzer; + MatchImageAnalyzer avatar_analyzer(oper.avatar); if (oper.cooling) { Log.trace("start matching cooling", oper.index); + static const double cooling_threshold = Task.get("BattleAvatarCoolingData")->templ_threshold; + static const auto cooling_mask_range = Task.get("BattleAvatarCoolingData")->mask_range; avatar_analyzer.set_threshold(cooling_threshold); - // 把环去掉 avatar_analyzer.set_mask_range(cooling_mask_range, true); } else { + static const double threshold = Task.get("BattleAvatarData")->templ_threshold; avatar_analyzer.set_threshold(threshold); } - avatar_analyzer.set_image(oper.avatar); double max_socre = 0; for (const auto& [name, avatar] : m_all_deployment_avatars) { @@ -184,7 +180,6 @@ bool asst::BattleHelper::update_deployment(bool init, const cv::Mat& reusable) oper.name = name; } } - if (max_socre) { m_cur_deployment_opers.insert_or_assign(oper.name, oper); remove_cooling_from_battlefield(oper); @@ -193,6 +188,7 @@ bool asst::BattleHelper::update_deployment(bool init, const cv::Mat& reusable) Log.info("unknown oper", oper.index); unknown_opers.emplace_back(oper); } + if (oper.cooling) { Log.trace("stop matching cooling", oper.index); }