激光雷达数据读取与opencv显示1.0

C++的学习在阅读书本知识的同时进展课题,阅读别人代码实现自己的代码。
1.验证数据读取正确
使用的数据是HOKUYO公司UTM-30LX,数据格式可以从网上查找的到。我使用的数据是已经经过处理,变为一帧一帧.csv的距离数据。
激光雷达数据读取与opencv显示1.0_第1张图片
内部的数据是这样的
激光雷达数据读取与opencv显示1.0_第2张图片(1)
激光雷达数据读取与opencv显示1.0_第3张图片(2)
我是用excel打开的(1),所以数据有个坑,两列数据以逗号分隔,但万万没想到数据结尾也已逗号分隔,最后已空格结束用Notepad++打开显示(2)。一直出现数据读取错误,最后才改正过来。
数据读取程序

#include
#include 
#include 
#include 
using namespace std; 
int main(){
    int x[1080][2];
    int j,i,n=0;
    FILE *fp;
    fp=fopen("ss.csv","r");
    if(!feof(fp)){
        cout << " open file" << endl;
        while(1){           
            fscanf(fp,"%d,%d, ",&x[n][0],&x[n][1]);
            if (feof(fp))break;
            n++;}
    }else
        cout << "Cannot open file" << endl;
    fclose(fp);
    printf("n=%d\n",n);
    for (j=0;jfor (i=0;i<2;i++)
        printf("%d ",x[j][1]);
        printf("\n");
    }
    system("pause");
    return 0;
}

定义了数据安行读取两列数据,因为只有第二列数据有用,所以我只显示第二列数据,以备使用。

2.接下来工作就得在opencv里面显示
参考的
激光雷达学习笔记(二)数据读取和显示
修改了一下数据格式,还有就是我想要的显示是白底黑点的图像显示。因此修改了一下显示效果。
修改处代码。

//改成白底
cvSet(RadarImage,cvScalar(255,255,255,255),0);

            Pixel = cvGet2D(RadarImage, x, y);
            //修改各点的值,描点为黑色
            Pixel.val[0] = 0; // B分量
            Pixel.val[1] = 0; // G分量
            Pixel.val[2] = 0; // R分量
            cvSet2D(RadarImage, x, y,Pixel);

最终的结果为
激光雷达数据读取与opencv显示1.0_第4张图片
一帧的激光雷达数据显示

你可能感兴趣的:(c++学习笔记,数据,opencv)