#ifndef AUTO_AIM__YOLO11_HPP #define AUTO_AIM__YOLO11_HPP #include #include #include #include #include #include "tasks/auto_aim/armor.hpp" #include "tasks/auto_aim/detector.hpp" #include "tasks/auto_aim/yolo.hpp" namespace auto_aim { class YOLO11 : public YOLOBase { public: YOLO11(const std::string & config_path, bool debug); std::list detect(const cv::Mat & bgr_img, int frame_count) override; std::list postprocess( double scale, cv::Mat & output, const cv::Mat & bgr_img, int frame_count) override; private: std::string device_, model_path_; std::string save_path_, debug_path_; bool debug_, use_roi_; const int class_num_ = 38; const float nms_threshold_ = 0.3; const float score_threshold_ = 0.7; double min_confidence_, binary_threshold_; ov::Core core_; ov::CompiledModel compiled_model_; cv::Rect roi_; cv::Point2f offset_; cv::Mat tmp_img_; Detector detector_; bool check_name(const Armor & armor) const; bool check_type(const Armor & armor) const; cv::Point2f get_center_norm(const cv::Mat & bgr_img, const cv::Point2f & center) const; std::list parse(double scale, cv::Mat & output, const cv::Mat & bgr_img, int frame_count); void save(const Armor & armor) const; void draw_detections(const cv::Mat & img, const std::list & armors, int frame_count) const; void sort_keypoints(std::vector & keypoints); }; } // namespace auto_aim #endif //AUTO_AIM__YOLO11_HPP