对于装甲板的规范

在原图中寻找目标,并返回是否找到:
    一.寻找所有可能的灯条
        1.单通道,只用一个红或蓝通道
        2.两种不同的二值化阈值,应对不同亮度
        3.开闭运算:腐蚀一次,膨胀两次,再腐蚀一次,大小均为(3,5)
        4.轮廓提取
        5.只对没有子轮廓的轮廓进行判断:是否为有效灯条
            1)最小外接矩形的长宽比范围:(1.2,10)
            2)最小外界矩形的面积<50 且凸度(轮廓面积和其最小外接矩形面积之比)>0.4
            3)最小外界矩形的面积>=50 且凸度(轮廓面积和其最小外接矩形面积之比)>0.6
            条件的关系:1&&(2||3)
            Note: 面积小的凸度可能容易不稳定
        6.判断灯条颜色:
            1)拿最小外界矩形的boundingRect(不倾斜的),再适当调大大小
            2)与src取交集:region &= cv::Rect(0, 0, src.cols, src.rows);
            3)遍历该roi:
                red_cnt += roi.at<cv::Vec3b>(row, col)[2];
                blue_cnt += roi.at<cv::Vec3b>(row, col)[0];
            4)red_cnt > blue_cnt 则为红,反之,则为蓝
         7.    遍历之前的两种阈值出来的二值图出来的灯条,判断是否为相同灯条:
            1)两灯条中心距离的平方<9
            8.若为相同灯条,则哪个凸度低,把哪个给remove
                (先遍历,把要erase的序号记下来,从大到小erase!)
            9.合并两种阈值出来的二值图出来的灯条
            10.若light_blobs.size() >= 2,才return true
    二.匹配灯条,得到装甲板
        1.判断两个灯条是否可以匹配
            1)颜色均为enemy_color
            2)两个灯条的长度比lengthRatioJudge  < 2.5    > 0.4
            3)判断两个灯条的间距 
                side_length = sqrt(centers.ddot(centers));
                    (side_length / light_blob_i.length < 10 
                    && side_length / light_blob_i.length > 0.5);
            4)判断两个灯条的错位度 中心差.x和角度cos乘积+中心差.y和角度sin乘积
            5)判断装甲板方向 (angle_i + angle_j) / 2.0 
        (-120.0 < angle && angle < -60.0) || (60.0 < angle && angle < 120.0);
            6)判断两个灯条的角度差 abs(angle_i - angle_j) < 20;
             7)判断两个灯条的高度差 <30
         2.判断是否是有效装甲板
             1)装甲板区域超过src,则continue
             2)装甲板中心位置的y不可能太低 (max_y + min_y) / 2 < 120
             3)if ((max_x - min_x) / (max_y - min_y) < 0.8) continue;
             Note:它们获得的装甲板是一个正矩形
         3.用卷积神经网络对装甲板进行分类
Leran:
    cv::countNonZero
    rect可以&
    point可加减
    使用了opencv的Tracker
 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值