mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-16 01:40:46 +08:00
50 lines
1.2 KiB
C++
50 lines
1.2 KiB
C++
#include "OcrAbstractTask.h"
|
|
|
|
#include <opencv2/opencv.hpp>
|
|
|
|
#include "AsstAux.h"
|
|
#include "Identify.h"
|
|
#include "WinMacro.h"
|
|
|
|
using namespace asst;
|
|
|
|
OcrAbstractTask::OcrAbstractTask(AsstCallback callback, void* callback_arg)
|
|
: AbstractTask(callback, callback_arg)
|
|
{
|
|
;
|
|
}
|
|
|
|
std::vector<TextArea> OcrAbstractTask::ocr_detect(bool use_raw_image)
|
|
{
|
|
const cv::Mat& image = get_format_image(use_raw_image);
|
|
|
|
return ocr_detect(image);
|
|
}
|
|
|
|
std::vector<TextArea> OcrAbstractTask::ocr_detect(const cv::Mat& image)
|
|
{
|
|
std::vector<TextArea> dst = m_identify_ptr->ocr_detect(image);
|
|
|
|
std::vector<json::value> all_text_json_vector;
|
|
for (const TextArea& text_area : dst) {
|
|
all_text_json_vector.emplace_back(Utf8ToGbk(text_area.text));
|
|
}
|
|
json::value all_text_json;
|
|
all_text_json["text"] = json::array(all_text_json_vector);
|
|
all_text_json["task_chain"] = m_task_chain;
|
|
m_callback(AsstMsg::TextDetected, all_text_json, m_callback_arg);
|
|
|
|
return dst;
|
|
}
|
|
|
|
bool asst::OcrAbstractTask::click_text(const cv::Mat& image, const std::string& text)
|
|
{
|
|
for (const TextArea& textarea : ocr_detect(image)) {
|
|
if (textarea.text == text) {
|
|
m_control_ptr->click(textarea.rect);
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|