#pragma once #include "AbstractImageAnalyzer.h" #include #include #include #include "AsstDef.h" namespace asst { class OcrImageAnalyzer; class MatchImageAnalyzer; 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; virtual void set_image(const cv::Mat image) override; void set_tasks(std::vector tasks_name) { m_tasks_name = std::move(tasks_name); } 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(std::shared_ptr task_ptr); bool ocr_analyze(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; Rect m_result_rect; //std::vector m_ocr_cache; }; }