Armor_Detection
装甲板整体识别实际上非常的简单,主要在于参数复杂且多
我将会带着看完整个流程,并对其中部分知识进行补充,但是函数的具体运作逻辑需要自行多熟悉几遍
整个装甲板基本函数如下
std::vector<Armor> Detection(const cv::Mat &src); //识别流程入口函数
// ======================图像处理======================
void setImage(const cv::Mat &src); // 对图像进行二值化
// ======================灯条匹配======================
void findLights(); // 找灯条获取候选匹配的灯条
bool isLight(Light& light, std::vector<cv::Point> &cnt); //判断是否为灯条
// =====================装甲板匹配=====================
void matchLights(); // 匹配灯条获取候选装甲板
bool conTain(cv::RotatedRect &match_rect,std::vector<Light> &Lights, size_t &i, size_t &j); // 判断两个灯条是否包含第三个灯条
void chooseTarget(); //找出优先级最高的装甲板
bool get_max(const float *data, float &confidence, int &id); // 寻找最大值
// =====================装甲板分数=====================
int armorGrade(const Armor& checkArmor);
// ======================数字图像=====================
void preImplement(Armor& armor); //获取装甲板数字图像ROI
接下来我将会为每一个函数进行解析
在对应的函数里面我会对相应的参数进行解释
如下是整体代码的运行逻辑
