Qt+OpenCV实时显示在地图空间中的位置

    有个类似于自动行驶小车的项目,使用摄像头检测贴在地上的地标,并在上位机实时显示当前小车所处的位置,上位机是Ubuntu系统。

    做上位机的界面用的是Qt,里面也配置好了OpenCV,用起来很方便,现在要解决的是如何设计一个地图,并且每次实时显示当前的位置。因为没有可借鉴的资料,我就根据激光雷达那个数据界面的启发,想到办法,可能比较笨,如果大家有更好的方法,请务必指教!我考虑的方法是先把地上的标志对应到地图上,对应成一个12*12的网格,然后用OpenCV生成这个空的网格地图,然后程序运行时加载这幅地图,地图长这个样:

                                                                         Qt+OpenCV实时显示在地图空间中的位置_第1张图片

    然后当小车在地上运行扫描到标志时,就可以得到当前所在的位置,然后在就在对应的交点上画一个红点,当进行到下一点时,用一个白点覆盖上一步的点,再画一个红点,也就是红点总是代表当前点,而用白点代表走过的点,程序的结果是这个样:

                                                                         Qt+OpenCV实时显示在地图空间中的位置_第2张图片

    附上很简单的打点部分的代码段:

int xData=1000,yData=1000;                                //保证一开始的点在地图外边
CvPoint pCirLast=cvPoint(xData,yData);
cvCircle(mapImage,pCirLast,10,CV_RGB(255,255,255),-1);    //每次把上一步的点用白色标记
yData=480-40*(((int)text[3]-48)+((int)text[2]-48)*10);    
xData=(((int)text[4]-48)*10+((int)text[5]-48)+6)*40;      
CvPoint pCirNew=cvPoint(xData,yData);           
cvCircle(mapImage,pCirNew,10,CV_RGB(255,0,0),-1);         //把当前的点用红色标记
mapQImage=Mat2QImage(mapImage);
ui->showLocateLabel->clear();
ui->showLocateLabel->setPixmap(QPixmap::fromImage(mapQImage));


你可能感兴趣的:(Qt,OpenCV)