您的位置:首页 > 编程语言

PCL学习笔记(2):点云视窗类CloudViewer的介绍以及PCL程序:代码解析

2015-02-04 11:54 645 查看
点云视窗类CloudViewer是简单显示点云的可视化工具类,可以让用户用尽可能少的代码查看点云。注意:点云视窗类不能应用于多线程应用程序中。

有关CloudViewer类的成员变量和函数等等,可以在C:\Program
Files\PCL 1.6.0\include\pcl-1.6\pcl\visualization\impl目录下的pcl_visualizer.hpp文件中查看。

/*

*PCL安装和环境配置请参考:

*/article/1511769.html

*代码出处:

*http://www.pclcn.org/study/shownews.php?lang=cn&id=149

*代码中加载的点云文件 my_point_cloud.pcd,可以去下面地址复制粘贴:

*/article/1511769.html

*/

//以下笔记于2015年2月5日修正:

一、PCL程序:

#include <pcl/visualization/cloud_viewer.h>
#include <iostream>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>

int user_data;

void viewerOneOff (pcl::visualization::PCLVisualizer& viewer)
{
	//设置背景颜色
    viewer.setBackgroundColor (1.0, 0.5, 1.0);
	//球体坐标
    pcl::PointXYZ o;
    o.x = 0;
    o.y = 0;
    o.z = 0;
	//添加球体
    viewer.addSphere (o, 1, "sphere", 0);
    std::cout << "i only run once" << std::endl;

}

void viewerPsycho (pcl::visualization::PCLVisualizer& viewer)
{
    static unsigned count = 0;
    std::stringstream ss;
    ss << "Once per viewer loop: " << count++;
    viewer.removeShape ("text", 0);
    viewer.addText (ss.str(), 200, 300, "text", 0);

    //FIXME: possible race condition here:
    user_data++;
}

int main ()
{
    pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGBA>);
    pcl::io::loadPCDFile ("my_point_cloud.pcd", *cloud); //加载点云文件

    pcl::visualization::CloudViewer viewer("Cloud Viewer");//创建viewer对象

    

    //blocks until the cloud is actually rendered
    viewer.showCloud(cloud);

    //use the following functions to get access to the underlying more advanced/powerful
    //PCLVisualizer

    //This will only get called once
    viewer.runOnVisualizationThreadOnce (viewerOneOff);

    //This will get called once per visualization iteration
    viewer.runOnVisualizationThread (viewerPsycho);
    while (!viewer.wasStopped ())
    {
        //you can also do cool processing here
        //FIXME: Note that this is running in a separate thread from viewerPsycho
        //and you should guard against race conditions yourself...
        user_data++;
    }
    return 0;
}

二、代码解析

void viewerOneOff (pcl::visualization::PCLVisualizer& viewer)//该函数功能是设置viewer信息
{
	//设置背景颜色
    viewer.setBackgroundColor (1.0, 0.5, 1.0);
	//添加球体
    viewer.addSphere (o, 1, "sphere", 0);

}


1.viewer.addSphere ()才是添加一个球体,第二个参数1是半径,第四个参数置0可见,置1不可见。初学者可能会误以为,程序运行后的球体是程序后面部分加载的点云文件里的点所构成,其实不是的。
2.pcl::io::loadPCDFile ("my_point_cloud.pcd", *cloud); 加载工程目录下my_point_cloud.pcd文件,该文件中的三维点,描绘的其实是point cloud library
的logo,见下图。【请仔细看~~~!】



如果我们不调用viewer.addSphere (),运行结果就会是:就非常好看了。



PCD文件的格式说明可参考http://www.pclcn.org/study/shownews.php?lang=cn&id=54

3.同时有球体和logo的图,半径=5。



如果我们只是注释掉setBackgroundColor这一句,效果如下图:



建立my_point_cloud.pcd文件,请点击/article/1511769.html
文件数据内容附在下边:

<span style="font-size:14px;"><span style="font-size:14px;"># .PCD v.7 - Point Cloud Data file format  
VERSION .7  
FIELDS x y z rgb  
SIZE 4 4 4 4  
TYPE F F F F  
COUNT 1 1 1 1  
WIDTH 213  
HEIGHT 1  
VIEWPOINT 0 0 0 1 0 0 0  
POINTS 213  
DATA ascii  
0.93773 0.33763 0 4.2108e+06  
0.90805 0.35641 0 4.2108e+06  
0.81915 0.32 0 4.2108e+06  
0.97192 0.278 0 4.2108e+06  
0.944 0.29474 0 4.2108e+06  
0.98111 0.24247 0 4.2108e+06  
0.93655 0.26143 0 4.2108e+06  
0.91631 0.27442 0 4.2108e+06  
0.81921 0.29315 0 4.2108e+06  
0.90701 0.24109 0 4.2108e+06  
0.83239 0.23398 0 4.2108e+06  
0.99185 0.2116 0 4.2108e+06  
0.89264 0.21174 0 4.2108e+06  
0.85082 0.21212 0 4.2108e+06  
0.81044 0.32222 0 4.2108e+06  
0.74459 0.32192 0 4.2108e+06  
0.69927 0.32278 0 4.2108e+06  
0.8102 0.29315 0 4.2108e+06  
0.75504 0.29765 0 4.2108e+06  
0.8102 0.24399 0 4.2108e+06  
0.74995 0.24723 0 4.2108e+06  
0.68049 0.29768 0 4.2108e+06  
0.66509 0.29002 0 4.2108e+06  
0.69441 0.2526 0 4.2108e+06  
0.62807 0.22187 0 4.2108e+06  
0.58706 0.32199 0 4.2108e+06  
0.52125 0.31955 0 4.2108e+06  
0.49351 0.32282 0 4.2108e+06  
0.44313 0.32169 0 4.2108e+06  
0.58678 0.2929 0 4.2108e+06  
0.53436 0.29164 0 4.2108e+06  
0.59308 0.24134 0 4.2108e+06  
0.5357 0.2444 0 4.2108e+06  
0.50043 0.31235 0 4.2108e+06  
0.44107 0.29711 0 4.2108e+06  
0.50727 0.22193 0 4.2108e+06  
0.43957 0.23976 0 4.2108e+06  
0.8105 0.21112 0 4.2108e+06  
0.73555 0.2114 0 4.2108e+06  
0.69907 0.21082 0 4.2108e+06  
0.63327 0.21154 0 4.2108e+06  
0.59165 0.21201 0 4.2108e+06  
0.52477 0.21491 0 4.2108e+06  
0.49375 0.21006 0 4.2108e+06  
0.4384 0.19632 0 4.2108e+06  
0.43425 0.16052 0 4.2108e+06  
0.3787 0.32173 0 4.2108e+06  
0.33444 0.3216 0 4.2108e+06  
0.23815 0.32199 0 4.808e+06  
0.3788 0.29315 0 4.2108e+06  
0.33058 0.31073 0 4.2108e+06  
0.3788 0.24399 0 4.2108e+06  
0.30249 0.29189 0 4.2108e+06  
0.23492 0.29446 0 4.808e+06  
0.29465 0.24399 0 4.2108e+06  
0.23514 0.24172 0 4.808e+06  
0.18836 0.32277 0 4.808e+06  
0.15992 0.32176 0 4.808e+06  
0.08642 0.32181 0 4.808e+06  
0.039994 0.32283 0 4.808e+06  
0.20039 0.31211 0 4.808e+06  
0.1417 0.29506 0 4.808e+06  
0.20921 0.22332 0 4.808e+06  
0.13884 0.24227 0 4.808e+06  
0.085123 0.29441 0 4.808e+06  
0.048446 0.31279 0 4.808e+06  
0.086957 0.24399 0 4.808e+06  
0.3788 0.21189 0 4.2108e+06  
0.29465 0.19323 0 4.2108e+06  
0.23755 0.19348 0 4.808e+06  
0.29463 0.16054 0 4.2108e+06  
0.23776 0.16054 0 4.808e+06  
0.19016 0.21038 0 4.808e+06  
0.15704 0.21245 0 4.808e+06  
0.08678 0.21169 0 4.808e+06  
0.012746 0.32168 0 4.808e+06  
-0.075715 0.32095 0 4.808e+06  
-0.10622 0.32304 0 4.808e+06  
-0.16391 0.32118 0 4.808e+06  
0.00088411 0.29487 0 4.808e+06  
-0.057568 0.29457 0 4.808e+06  
-0.0034333 0.24399 0 4.808e+06  
-0.055185 0.24185 0 4.808e+06  
-0.10983 0.31352 0 4.808e+06  
-0.15082 0.29453 0 4.808e+06  
-0.11534 0.22049 0 4.808e+06  
-0.15155 0.24381 0 4.808e+06  
-0.1912 0.32173 0 4.808e+06  
-0.281 0.3185 0 4.808e+06  
-0.30791 0.32307 0 4.808e+06  
-0.33854 0.32148 0 4.808e+06  
-0.21248 0.29805 0 4.808e+06  
-0.26372 0.29905 0 4.808e+06  
-0.22562 0.24399 0 4.808e+06  
-0.25035 0.2371 0 4.808e+06  
-0.29941 0.31191 0 4.808e+06  
-0.35845 0.2954 0 4.808e+06  
-0.29231 0.22236 0 4.808e+06  
-0.36101 0.24172 0 4.808e+06  
-0.0034393 0.21129 0 4.808e+06  
-0.07306 0.21304 0 4.808e+06  
-0.10579 0.2099 0 4.808e+06  
-0.13642 0.21411 0 4.808e+06  
-0.22562 0.19323 0 4.808e+06  
-0.24439 0.19799 0 4.808e+06  
-0.22591 0.16041 0 4.808e+06  
-0.23466 0.16082 0 4.808e+06  
-0.3077 0.20998 0 4.808e+06  
-0.3413 0.21239 0 4.808e+06  
-0.40551 0.32178 0 4.2108e+06  
-0.50568 0.3218 0 4.2108e+06  
-0.41732 0.30844 0 4.2108e+06  
-0.44237 0.28859 0 4.2108e+06  
-0.41591 0.22004 0 4.2108e+06  
-0.44803 0.24236 0 4.2108e+06  
-0.50623 0.29315 0 4.2108e+06  
-0.50916 0.24296 0 4.2108e+06  
-0.57019 0.22334 0 4.2108e+06  
-0.59611 0.32199 0 4.2108e+06  
-0.65104 0.32199 0 4.2108e+06  
-0.72566 0.32129 0 4.2108e+06  
-0.75538 0.32301 0 4.2108e+06  
-0.59653 0.29315 0 4.2108e+06  
-0.65063 0.29315 0 4.2108e+06  
-0.59478 0.24245 0 4.2108e+06  
-0.65063 0.24399 0 4.2108e+06  
-0.70618 0.29525 0 4.2108e+06  
-0.76203 0.31284 0 4.2108e+06  
-0.70302 0.24183 0 4.2108e+06  
-0.77062 0.22133 0 4.2108e+06  
-0.41545 0.21099 0 4.2108e+06  
-0.45004 0.19812 0 4.2108e+06  
-0.4475 0.1673 0 4.2108e+06  
-0.52031 0.21236 0 4.2108e+06  
-0.55182 0.21045 0 4.2108e+06  
-0.5965 0.21131 0 4.2108e+06  
-0.65064 0.2113 0 4.2108e+06  
-0.72216 0.21286 0 4.2108e+06  
-0.7556 0.20987 0 4.2108e+06  
-0.78343 0.31973 0 4.2108e+06  
-0.87572 0.32111 0 4.2108e+06  
-0.90519 0.32263 0 4.2108e+06  
-0.95526 0.34127 0 4.2108e+06  
-0.79774 0.29271 0 4.2108e+06  
-0.85618 0.29497 0 4.2108e+06  
-0.79975 0.24326 0 4.2108e+06  
-0.8521 0.24246 0 4.2108e+06  
-0.91157 0.31224 0 4.2108e+06  
-0.95031 0.29572 0 4.2108e+06  
-0.92223 0.2213 0 4.2108e+06  
-0.94979 0.24354 0 4.2108e+06  
-0.78641 0.21505 0 4.2108e+06  
-0.87094 0.21237 0 4.2108e+06  
-0.90637 0.20934 0 4.2108e+06  
-0.93777 0.21481 0 4.2108e+06  
0.22244 -0.0296 0 4.808e+06  
0.2704 -0.078167 0 4.808e+06  
0.24416 -0.056883 0 4.808e+06  
0.27311 -0.10653 0 4.808e+06  
0.26172 -0.10653 0 4.808e+06  
0.2704 -0.1349 0 4.808e+06  
0.24428 -0.15599 0 4.808e+06  
0.19017 -0.025297 0 4.808e+06  
0.14248 -0.02428 0 4.808e+06  
0.19815 -0.037432 0 4.808e+06  
0.14248 -0.03515 0 4.808e+06  
0.093313 -0.02428 0 4.808e+06  
0.044144 -0.02428 0 4.808e+06  
0.093313 -0.03515 0 4.808e+06  
0.044144 -0.03515 0 4.808e+06  
0.21156 -0.17357 0 4.808e+06  
0.029114 -0.12594 0 4.2108e+06  
0.036583 -0.15619 0 4.2108e+06  
0.22446 -0.20514 0 4.808e+06  
0.2208 -0.2369 0 4.808e+06  
0.2129 -0.208 0 4.808e+06  
0.19316 -0.25672 0 4.808e+06  
0.14497 -0.27484 0 4.808e+06  
0.030167 -0.18748 0 4.2108e+06  
0.1021 -0.27453 0 4.808e+06  
0.1689 -0.2831 0 4.808e+06  
0.13875 -0.28647 0 4.808e+06  
0.086993 -0.29568 0 4.808e+06  
0.044924 -0.3154 0 4.808e+06  
-0.0066125 -0.02428 0 4.808e+06  
-0.057362 -0.02428 0 4.808e+06  
-0.0066125 -0.03515 0 4.808e+06  
-0.057362 -0.03515 0 4.808e+06  
-0.10653 -0.02428 0 4.808e+06  
-0.15266 -0.025282 0 4.808e+06  
-0.10653 -0.03515 0 4.808e+06  
-0.16036 -0.037257 0 4.808e+06  
0.0083286 -0.1259 0 4.2108e+06  
0.0007442 -0.15603 0 4.2108e+06  
-0.1741 -0.17381 0 4.808e+06  
-0.18502 -0.02954 0 4.808e+06  
-0.20707 -0.056403 0 4.808e+06  
-0.23348 -0.07764 0 4.808e+06  
-0.2244 -0.10653 0 4.808e+06  
-0.23604 -0.10652 0 4.808e+06  
-0.20734 -0.15641 0 4.808e+06  
-0.23348 -0.13542 0 4.808e+06  
0.0061083 -0.18729 0 4.2108e+06  
-0.066235 -0.27472 0 4.808e+06  
-0.17577 -0.20789 0 4.808e+06  
-0.10861 -0.27494 0 4.808e+06  
-0.15584 -0.25716 0 4.808e+06  
-0.0075775 -0.31546 0 4.808e+06  
-0.050817 -0.29595 0 4.808e+06  
-0.10306 -0.28653 0 4.808e+06  
-0.1319 -0.2831 0 4.808e+06  
-0.18716 -0.20571 0 4.808e+06  
-0.18369 -0.23729 0 4.808e+06</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: