SLAM - 利用Qt绘制灰度地图
来源:互联网 发布:java售前工程师面试题 编辑:程序博客网 时间:2024/05/09 21:08
SLAM - 利用Qt绘制灰度地图
MapWidget::MapWidget(QWidget *parent) : QWidget(parent){ resize(WIDTH,HEIGHT); scale_value = 1; index = 0; Zoom = 10; // 缩放因子 imgWidth = this->width(); imgHeight = this->height(); for(int i=0;i<WIDTH;++i) for(int j=0;j<HEIGHT;++j) mapData.mapsum[i][j] = 255; desImage = QImage(imgWidth,imgHeight,QImage::Format_RGB32); // RGB32 // 初始化地图为白色 for(int i=0;i<imgWidth;++i) for(int j=0;j<imgHeight;++j) desImage.setPixel(i,j,qRgb(255,255,255)); timer = new QTimer(this); connect(timer,SIGNAL(timeout()),this,SLOT(update())); // 启动定时器 timer->start(100);}void MapWidget::paintEvent(QPaintEvent *){ QPainter painter(this); if(index < TOTAL_LINES) { double x,y,theta,rho; double tmpX = 0.0, tmpY = 0.0; double drawX = 0.0, drawY = 0.0; for(int i=0; i<1081; ++i) { theta = (i/4.0+130)*M_PI/180; rho = RadarVector.at(index).data[i]*Zoom; x = rho*cos(theta); y = rho*sin(theta); tmpX = x; tmpY = y; double rad_psi = DEG2RAD(EulerVector.at(index).psi); // 旋转 drawX = tmpX*cos(rad_psi) - tmpY*sin(rad_psi); drawY = tmpX*sin(rad_psi) + tmpY*cos(rad_psi); // 位移 drawX += PosVector.at(index).p_x * Zoom; drawY += PosVector.at(index).p_y * Zoom; drawX = imgWidth/5*4 + drawX; drawY = imgHeight/2 - drawY; // 当前位置坐标 double draw_pose_x = imgWidth/5*4 + PosVector.at(index).p_x*Zoom; double draw_pose_y = imgHeight/2 - PosVector.at(index).p_y*Zoom; int r = drawX; int c = drawY; // 绘制地图 if(r>0 && r<WIDTH && c>0 && c<HEIGHT) { int val = mapData.mapsum[r][c]; mapData.mapsum[r][c]--; if(val < 0) val = 0; desImage.setPixel(r,c,qRgb(val,val,val)); } // 绘制运动轨迹 int pose_r = draw_pose_x; int pose_c = draw_pose_y; if(pose_r>0 && pose_r<WIDTH && pose_c>0 && pose_c<HEIGHT) { desImage.setPixel(pose_r,pose_c,qRgb(0,0,255)); } } } else{ if(timer->isActive()){ timer->stop(); qDebug()<<"stop..."; // 生成图片 desImage.save("map_b.png"); } } painter.drawImage(0,0,desImage); ++index; Sleep(10);}
效果如下:
0 0
- SLAM - 利用Qt绘制灰度地图
- 利用OpenCV计算并绘制灰度直方图
- QT利用QCustomPlot绘制曲线图
- qt绘制坐标系--利用QCustomPlot
- 利用OpenCV计算并绘制灰度直方图 (转载)
- 利用OpenCV计算并绘制灰度直方图 (转载)
- 利用qt打开一张图片并转成灰度矩阵
- Qt下利用QWT绘制波形图
- Qt 利用 Qwt 绘制动态曲线
- Qt QChart,利用QChart绘制动态曲线
- 地图构建SLAM网络资源
- 绘制灰度图像
- opencv绘制灰度直方图
- opencv绘制灰度直方图
- img 绘制灰度直方图
- opencv 绘制灰度直方图
- 图像灰度直方图绘制——使用QT实现一个图像处理软件2
- android游戏开发 深度解析利用位图绘制rpg地图
- uva 1586 Molar mass
- Kmeans、Kmeans++和KNN算法比较
- spring boot 学习笔记(008)Apache camel
- 安装node-canvas时win_delay_load_hook.c错误
- 机械专业的计算机集成制造系统课中窥看到的计算机算法应用(三)
- SLAM - 利用Qt绘制灰度地图
- 刘汝佳紫书 uva201 解题报告
- 分享一点小东西,希望对新手有用!
- OpenCV学习笔记(一)(Linux + Qt)
- Scala实现二叉搜索树
- uva 1225 Digit Counting
- 只有程序员看的懂面试圣经|如何拿下编程面试
- 通用后台管理系统(ExtJS 4.2 + Spring MVC 3.2 + Hibernate)
- 通过字节流方式实现文件下载以及其中的编码问题