RoadSegAnalysis.h 971 Bytes
#include "include.h"
#include "../village_inc.h"
#include "road_seg.h"

#include <vector>

using namespace std;

struct RoadInfo{
    std::vector<LineInfo> vec_line;
    std::vector<SegInfo> vec_road;

    cv::Mat direct_mask;
};

class RoadSegAnalysis
{
public:
    RoadSegAnalysis(/* args */);
    ~RoadSegAnalysis();

    int init(int devId);

    std::vector<RoadInfo> detect(vector<sy_img> vec_img);

    int check_reverse_driving(cv::Mat direct_mask, sy_rect rc, int src_width, int src_height, int head_or_tail);

    int check_cross_line(std::vector<LineInfo>& vec_line, sy_rect rc);

    int check_cross_region(std::vector<SegInfo>& vec_reg, sy_rect rc, int region_type);

private:
    int release();

    std::vector<SegInfo> parse_seg(rs_result one_result, sy_img src);

    cv::Mat parse_direct(rs_result one_result, sy_img src);

    void post_direct(rs_result one_result, sy_img src);
private:
    void* m_handle{nullptr};
    aclrtContext ctx{nullptr};
};