RGBD slam 学习, qt 工程环境配置.md
来源:互联网 发布:阿里云技术架构 编辑:程序博客网 时间:2024/05/21 18:42
- 参考链接: http://blog.csdn.net/jasmine_shine/article/details/50973748
配置工程实现高翔师兄博客第二讲功能,Qt的关键字提醒功能更方便开发:http://www.cnblogs.com/gaoxiang12/p/4652478.html - 工程配置:
新建 qt console 程序,删除默认main函数内容,写入练习程序:
// C++ 标准库#include <iostream>#include <string>using namespace std;// OpenCV 库#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>// PCL 库#include <pcl/io/pcd_io.h>#include <pcl/point_types.h>// 定义点云类型typedef pcl::PointXYZRGBA PointT;typedef pcl::PointCloud<PointT> PointCloud; // 相机内参const double camera_factor = 1000;const double camera_cx = 325.5;const double camera_cy = 253.5;const double camera_fx = 518.0;const double camera_fy = 519.0;// 主函数 int main( int argc, char** argv ){ // 读取./data/rgb.png和./data/depth.png,并转化为点云 // 图像矩阵 cv::Mat rgb, depth; // 使用cv::imread()来读取图像 // API: http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=imread#cv2.imread rgb = cv::imread( "./data/rgb.png" ); // rgb 图像是8UC3的彩色图像 // depth 是16UC1的单通道图像,注意flags设置-1,表示读取原始数据不做任何修改 depth = cv::imread( "./data/depth.png", -1 ); // 点云变量 // 使用智能指针,创建一个空点云。这种指针用完会自动释放。 PointCloud::Ptr cloud ( new PointCloud ); // 遍历深度图 for (int m = 0; m < depth.rows; m++) for (int n=0; n < depth.cols; n++) { // 获取深度图中(m,n)处的值 ushort d = depth.ptr<ushort>(m)[n]; // d 可能没有值,若如此,跳过此点 if (d == 0) continue; // d 存在值,则向点云增加一个点 PointT p; // 计算这个点的空间坐标 p.z = double(d) / camera_factor; p.x = (n - camera_cx) * p.z / camera_fx; p.y = (m - camera_cy) * p.z / camera_fy; // 从rgb图像中获取它的颜色 // rgb是三通道的BGR格式图,所以按下面的顺序获取颜色 p.b = rgb.ptr<uchar>(m)[n*3]; p.g = rgb.ptr<uchar>(m)[n*3+1]; p.r = rgb.ptr<uchar>(m)[n*3+2]; // 把p加入到点云中 cloud->points.push_back( p ); } // 设置并保存点云 cloud->height = 1; cloud->width = cloud->points.size(); cout<<"point cloud size = "<<cloud->points.size()<<endl; cloud->is_dense = false; pcl::io::savePCDFile( "./data/pointcloud.pcd", *cloud ); // 清除数据并退出 cloud->points.clear(); cout<<"Point cloud saved."<<endl; return 0;}
- 在 .pro 文件中写入文件目录和依赖项,qt 默认没有开启 C++ 标准。 相关路径可能会有少许差别,在自己ubuntu中相关路径下找到对应文件核对下。
QMAKE_CXXFLAGS += -std=c++11INCLUDEPATH += /usr/include \ /usr/include/opencv \ /usr/include/opencv2 \ /usr/include/pcl-1.7 \ /usr/include/eigen3 \ /usr/include/boost \LIBS += /usr/lib/x86_64-linux-gnu/libopencv_video.so \ /usr/lib/x86_64-linux-gnu/libopencv_objdetect.so \ /usr/lib/x86_64-linux-gnu/libopencv_ml.so \ /usr/lib/x86_64-linux-gnu/libopencv_legacy.so \ /usr/lib/x86_64-linux-gnu/libopencv_core.so \ /usr/lib/x86_64-linux-gnu/libopencv_features2d.so \ /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so \ /usr/lib/x86_64-linux-gnu/libopencv_highgui.so \ /usr/lib/x86_64-linux-gnu/libopencv_gpu.so \ /usr/lib/x86_64-linux-gnu/libopencv_flann.so \ /usr/lib/x86_64-linux-gnu/libopencv_contrib.so \ /usr/lib/x86_64-linux-gnu/libopencv_calib3d.so \ /usr/lib/libpcl_common.so.1.7 \ /usr/lib/libpcl_io.so.1.7 \ /usr/lib/libpcl_io_ply.so.1.7 \ /usr/lib/x86_64-linux-gnu/libboost_system.so
- 将例程中的图片数据放入 qt 工程build-rgbdslam-Desktop_Qt_5_5_1_GCC_64bit-Debug目录中,例程中的读取存放文件路径也要有相应更改。
rgb=cv::imread("rgb.png");depth=cv::imread("depth.png",-1);pcl::io::savePCDFile("pointcloud.pcd",*cloud);
- bulid 后查看点云图像, terminator 进入build-rgbdslam-Desktop_Qt_5_5_1_GCC_64bit-Debug目录中运行
$: pcl_viewer pointcloud.pcd
0 0
- RGBD slam 学习, qt 工程环境配置.md
- RGBD-SLAM
- RGBD-SLAM V2的学习和测试
- RGBD-SLAM总结
- RGBD-SLAM尝试——rgbd-slam-v2
- 安装rgbd slam v2时,部分问题
- 安装rgbd slam v2时,部分问题
- RGB-D SLAM环境配置
- 视觉SLAM实战(一):RGBD SLAM V2
- Qt学习:Win7下Qt环境配置
- Microsoft Kinect 2 and ubuntu 14.04 and ROS Indigo and RGBD SLAM and RTAB Map 详细配置及comments
- 【视觉 SLAM 1】 视觉SLAM- RGBD 加 语义分割 1 (需要RGBD相机)
- 一起学RGB-D-slam环境配置
- 半闲居士的博客地址,主要关于RGBD-SLAM
- RGBD-SLAM(一)——深度摄像机
- ORB_SLAM2系列之三:ORB_SLAM2跑RGBD SLAM数据集
- VS2008配置Qt工程
- QT工程集成配置
- 《c和指针》(三)
- 理解java中的vo,bo,po等概念
- Win\Linux 双系统,如何删除linux的grub引导
- 小波分析解读
- Linux学习笔记 -- day01 基本命令
- RGBD slam 学习, qt 工程环境配置.md
- CF198 div1 D - Iahub and Xors
- 最后一公里极速配送
- linux device drivers 读书笔记(第三章)
- 元组与列表的区别
- hdu 1166 敌兵布阵(线段树+单点更新)
- php使用mcript扩展实现对称加密
- Git_Git本地操作_第3课_Git基本工作流程
- Android实现简单的音乐播放