From 199e9e6ec4ebc065174cb6ae829ffe7f7e2b3691 Mon Sep 17 00:00:00 2001 From: MistEO Date: Fri, 29 Oct 2021 17:04:02 +0800 Subject: [PATCH] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D=E8=BF=9B=E9=A9=BB?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=8C=89=E9=92=AE=E8=AF=86=E5=88=AB=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=8C=E6=94=B9=E7=94=A8?= =?UTF-8?q?OCR=E8=AF=86=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 25 +++----------- src/MeoAssistance/InfrastAbstractTask.cpp | 40 ++++++++++++----------- 2 files changed, 25 insertions(+), 40 deletions(-) diff --git a/resource/tasks.json b/resource/tasks.json index ac8e14be06..ccb33df8bb 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -1078,29 +1078,12 @@ ], "templThreshold": 0.95 }, - "InfrastStationedOnClicked": { - "template": "StationedOnClicked.png", + "InfrastStationedInfo": { + "algorithm": "OcrDetect", "cache": false, - "maskRange": [ - 120, - 255 + "text": [ + "进驻信息" ], - "templThreshold": 0.8, - "roi": [ - 0, - 0, - 150, - 720 - ] - }, - "InfrastStationedNotClicked": { - "template": "StationedNotClicked.png", - "cache": false, - "maskRange": [ - 120, - 255 - ], - "templThreshold": 0.65, "roi": [ 0, 0, diff --git a/src/MeoAssistance/InfrastAbstractTask.cpp b/src/MeoAssistance/InfrastAbstractTask.cpp index 7e13bfde50..2bf91095a0 100644 --- a/src/MeoAssistance/InfrastAbstractTask.cpp +++ b/src/MeoAssistance/InfrastAbstractTask.cpp @@ -31,31 +31,33 @@ bool asst::InfrastAbstractTask::enter_facility(const std::string& facility, int bool asst::InfrastAbstractTask::enter_oper_list_page() { auto image = ctrler.get_image(); - MatchImageAnalyzer station_analyzer(image); - // 如果“进驻信息”这个按钮没有被点开,那就点开,然后重新抓一次图像 - const auto notclicked_task_ptr = std::dynamic_pointer_cast( - resource.task().task_ptr("InfrastStationedNotClicked")); - station_analyzer.set_task_info(*notclicked_task_ptr); - if (station_analyzer.analyze()) { - ctrler.click(station_analyzer.get_result().rect); - sleep(notclicked_task_ptr->rear_delay); - image = ctrler.get_image(); - station_analyzer.set_image(image); - } - - const auto onclicked_task_ptr = std::dynamic_pointer_cast( - resource.task().task_ptr("InfrastStationedOnClicked")); - station_analyzer.set_task_info(*onclicked_task_ptr); - if (!station_analyzer.analyze()) { - return false; - } + // 识别右边的“进驻”按钮 const auto enter_task_ptr = std::dynamic_pointer_cast( resource.task().task_ptr("InfrastEnterOperList")); OcrImageAnalyzer enter_analyzer(image); enter_analyzer.set_task_info(*enter_task_ptr); + + // 如果没找到,说明“进驻信息”这个按钮没有被点开,那就点开它 if (!enter_analyzer.analyze()) { - return false; + OcrImageAnalyzer station_analyzer(image); + + const auto stationedinfo_task_ptr = std::dynamic_pointer_cast( + resource.task().task_ptr("InfrastStationedInfo")); + station_analyzer.set_task_info(*stationedinfo_task_ptr); + if (station_analyzer.analyze()) { + ctrler.click(station_analyzer.get_result().front().rect); + sleep(stationedinfo_task_ptr->rear_delay); + // 点开了按钮之后,再识别一次右边的 + image = ctrler.get_image(); + enter_analyzer.set_image(image); + if (!enter_analyzer.analyze()) { + return false; + } + } + else { + return false; + } } ctrler.click(enter_analyzer.get_result().front().rect); sleep(enter_task_ptr->rear_delay);