单个雷视一体数据关联

使用单个雷达和单个相机进行了雷视数据融合,雷达具备目标检测、目标类型识别、车流量统计、车速检测、目标跟踪等能力,将雷达采集的车辆位置坐标、车速、车辆的唯一ID号等信息,在道路地图上进行叠加展示,实现行车轨迹的实时动态展示。同时,利用高清卡口相机可获取每辆车的车牌、车型、车辆颜色等信息,将车辆轨迹数据与车牌信息进行匹配叠加,从而获取了单部雷达和视频检测范围内车辆的行驶轨迹以及对应的车牌、车型等信息。使用雷达航迹中所包含的时间与车道号信息与相机抓拍的车辆特征信息中的抓拍时间以及抓拍时车辆所处的车道号进行比对若时间差小于某一阈值且车道号相等,则进行雷视数据关联,实现将车牌抓拍摄像机获取的车辆特征信息(车牌、车型、车辆颜色等)叠加在车辆的动态航迹上,对目标进行实时跟踪定位。
关键代码如下:

void RealDataHandler::real_fusion(){
    QVariantMap newData;

    //QString radartime;
    qDebug()<<"vecRadar.size()"<<vecRadar.size();

    if(!listRealTimeCamera.isEmpty())//如果相机拍到数据进行关联
    {
        listRealTimeradar.append(radartime);
        listRealTimeradar.append(radar_px);
        listRealTimeradar.append(radar_py);
        listRealTimeradar.append(radar_road);
        listRealTimeradar.append(radar_vx);
        listRealTimeradar.append(radar_vy);
        listRealTimeradar.append(radar_carID);
   // qDebug()<<cameraYear.toInt()<<cameraMonth.toInt()<<cameraDay.toInt()<<cameraHour.toInt()<<cameraMinute.toInt()<<cameraSecond.toInt() << cameraMillisecond.toInt();
   // qDebug()<<radarYear.toInt()<<radarMonth.toInt()<<radarDay.toInt()<<radarHour.toInt()<<radarMinute.toInt()<<radarSecond.toInt() << radarMillisecond.toInt();
	    if(cameraYear.toInt() == radarYear.toInt() && cameraMonth.toInt() == radarMonth.toInt() && cameraDay.toInt() == radarDay.toInt()) {
	        if (cameraHour.toInt() == radarHour.toInt()) {
	            int tempCameraTime = cameraMinute.toInt() * 60000 + cameraSecond.toInt() * 1000 + cameraMillisecond.toInt();
	            int tempRadarTime = radarMinute.toInt() * 60000 + radarSecond.toInt() * 1000 + radarMillisecond.toInt();
	            int k = abs(tempCameraTime - tempRadarTime); //时间差值
	
	            qDebug() << "k = " << k << endl;
	            if (k < kTimeValue) { 
	                int tempRoadId = radar_road.toInt();
	                qDebug() << "tempRoadId = " << tempRoadId << endl;
	                int tempdriveChan = camera_driveChan.toInt();
	                qDebug() << "tempdriveChan = " << tempdriveChan << endl;
	                if( (cameraLine - radar_px.toInt() >= 0) && (cameraLine - radar_px.toInt() < distanceValue) ) {
	                    if (tempRoadId == tempdriveChan) {
	                        listRealTimeFusion.append(listRealTimeradar);
	                        listRealTimeFusion.append(listRealTimeCamera);
	                        qDebug()<<"real_m_carsInfo.count()"<<listRealTimeFusion;
	
	                        listRealTimeradar.clear();
	                        listRealTimeCamera.clear();
	                        //使用map格式存储融合信息
	                        newData.insert("CarID", listRealTimeFusion[6]);
	                        newData.insert("Px",  listRealTimeFusion[1]);
	                        newData.insert("Py",  listRealTimeFusion[2]);
	                        newData.insert("Vx",  listRealTimeFusion[4]);
	                        newData.insert("Vy",  listRealTimeFusion[5]);
	                        newData.insert("RoadId",  listRealTimeFusion[3]);
	                        newData.insert("recordTime",  listRealTimeFusion[0]);
	                        newData.insert("snapFirstPicTime", listRealTimeFusion[7]);
	                        newData.insert("carNum", listRealTimeFusion[8]);
	                        newData.insert("carType", listRealTimeFusion[9]);
	                        newData.insert("driveChan", listRealTimeFusion[10]);
	                        newData.insert("carDirectiontype", listRealTimeFusion[11]);
	                        newData.insert("carSpeed", listRealTimeFusion[12]);
	                        newData.insert("PilotSafebelt", listRealTimeFusion[13]);
	                        newData.insert("IllegalType", listRealTimeFusion[14]);
	                        newData.insert("byPendant", listRealTimeFusion[15]);
	                        newData.insert("CopilotSafebelt", listRealTimeFusion[16]);
	                        newData.insert("PilotCall", listRealTimeFusion[17]);
	                        newData.insert("CarColor", listRealTimeFusion[18]);
	                        newData.insert("VehicleLogoRecog", listRealTimeFusion[19]);
	                        real_m_carsInfo.append(newData);
	                        //qDebug()<<"real_m_carsInfo.count()"<<real_m_carsInfo.count();
	
	                        //qDebug()<<real_m_carsInfo;
	                        listRealTimeFusion.clear();
	    					}
   		 				}
    				}
    			}
    		}
    	}
    }

雷达检测到目标的动态信息和相机检测到目标的特征信息存放在QVariantMap中,最后进行实时读取并在界面显示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wrdoct

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值