#pragma once #include "AbstractImageAnalyzer.h" #include #include #include #include "AsstTypes.h" namespace asst { class OcrImageAnalyzer; class MatchImageAnalyzer; class RuntimeStatus; class ProcessTaskImageAnalyzer final : public AbstractImageAnalyzer { public: using AbstractImageAnalyzer::AbstractImageAnalyzer; ProcessTaskImageAnalyzer(const cv::Mat image, const Rect& roi) = delete; ProcessTaskImageAnalyzer(const cv::Mat& image, std::vector tasks_name); virtual ~ProcessTaskImageAnalyzer(); virtual bool analyze() override; void set_image(const cv::Mat image); void set_tasks(std::vector tasks_name); void set_status(std::shared_ptr status) noexcept; std::shared_ptr get_result() const noexcept { return m_result; } const Rect& get_rect() const noexcept { return m_result_rect; } ProcessTaskImageAnalyzer& operator=(const ProcessTaskImageAnalyzer&) = delete; ProcessTaskImageAnalyzer& operator=(ProcessTaskImageAnalyzer&&) = delete; private: // 该分析器不支持外部设置ROI virtual void set_roi(const Rect& roi) noexcept override { AbstractImageAnalyzer::set_roi(roi); } virtual void set_image(const cv::Mat image, const Rect& roi) { AbstractImageAnalyzer::set_image(image, roi); } bool match_analyze(const std::shared_ptr& task_ptr); bool ocr_analyze(const std::shared_ptr& task_ptr); void reset() noexcept; std::unique_ptr m_ocr_analyzer; std::unique_ptr m_match_analyzer; std::vector m_tasks_name; std::shared_ptr m_result = nullptr; std::shared_ptr m_status = nullptr; Rect m_result_rect; //std::vector m_ocr_cache; }; }