about PCL
Pcl(Point Cloud Library) is a large cross-platform open source that has been built on the basis of previous point cloud-related researchC + +programming Library, which realizes a large number of point cloud-related general-purpose algorithms and efficient data structures, involving point cloud acquisition, filtering, segmentation, registration, retrieval, feature extraction, identification, tracking, surface reconstruction, visualization and so on. supports a variety of operating system platforms that can beWindows,Linux,Android,Mac OS X, part of the embedded real-time system running. If you sayOpenCVis a2Dthe crystallization of information acquisition and processing, thenPCLjust in3Dinformation acquisition and processing have the same status,PCLis aBSDlicensed and can be used for commercial and academic applications free of charge.
just recently contacted PCL, found that the PCL is still relatively few people, there is not much information to learn, so I want to learn from the beginning, and record the process of learning. If you are interested in learning together students can add me QQ761551935, we exchange learning together.
Learning Resources:
PCL 1.8.0 Comparison of the complete installation package and installation steps: http://unanancyowen.com/en/pcl18/
PCL Related Data summary: https://github.com/neilgu00365/Survey-for-SfMMission
PCL China Point Cloud Library: http://www.pclcn.org/
Environment:windows+vs2010
If you don't have vs2010 , I'll share an installation package link:http://pan.baidu.com/s/1pL3I0dH Password:a53o
First, download
I am using PCL 1.6.0 all-in-one installer,windows MSVC (32bit), so the following is the main version. In fact, just download pcl-1.6.0-allinone-msvc2010-win32.exe,openni 1.5.4 (patched) and sensor 5.1.0 (patched) three files are all right, Pcl-1.6.0-allinone-msvc2010-win32.exe Internal already contains all the dependent libraries, during the installation process,Openni will not be installed, so to download separately, Other dependent libraries can be downloaded without downloading them.
- official : http://pointclouds.org/downloads/windows.html
Second, installation
Individually installed
1, Pcl-1.6.0-allinone-msvc2010-win32.exe
2, Openni-win32-1.5.4-dev.msi
3, Sensor-win-opensource32-5.1.0.msi
Note: You are compiling the Win32 and Win64 versions to differentiate,PCL and dependent libraries are unified with the same version, otherwise run the time will be error.
Third, the configuration
1. Configuration include path
will be The include in the 3rdParty directory under the PCL installation path is added, plus openni The separately installed path is also added, and the include\pcl-1.6 under the PCL installation path is added.
2. Configure the Library path
will be The 3rdParty directory under the PCL installation path is added to the Lib in addition to the Openni separately installed path, as well as The lib in the PCL installation path is also added.
3. Configure the input library file
Add the following file names
Opengl32.libpcl_apps_debug.libpcl_common_debug.libpcl_features_debug.libpcl_filters_debug.libpcl_io_ Debug.libpcl_io_ply_debug.libpcl_kdtree_debug.libpcl_keypoints_debug.libpcl_octree_debug.libpcl_registration_ Debug.libpcl_sample_consensus_debug.libpcl_search_debug.libpcl_segmentation_debug.libpcl_surface_debug.libpcl_ tracking_debug.libpcl_visualization_debug.libflann_cpp_s-Gd.libboost_chrono-vc100-mt-gd-1_49.libboost_date_time-vc100-mt-gd-1_47.libboost_date_time-vc100-mt-gd-1_49.libboost_filesystem-vc100-mt-gd-1_47.libboost_filesystem-vc100-mt-gd-1_49.libboost_graph-vc100-mt-gd-1_49.libboost_graph_parallel-vc100-mt-gd-1_49.libboost_iostreams-vc100-mt-gd-1_47.libboost_iostreams-vc100-mt-gd-1_49.libboost_locale-vc100-mt-gd-1_49.libboost_math_c99-vc100-mt-gd-1_49.libboost_math_c99f-vc100-mt-gd-1_49.LIBBOOST_MATH_TR1-vc100-mt-gd-1_49.libboost_math_tr1f-vc100-mt-gd-1_49.libboost_mpi-vc100-mt-gd-1_49.libboost_prg_exec_monitor-vc100-mt-gd-1_49.libboost_program_options-vc100-mt-gd-1_49.libboost_random-vc100-mt-gd-1_49.libboost_regex-vc100-mt-gd-1_49.libboost_serialization-vc100-mt-gd-1_49.libboost_signals-vc100-mt-gd-1_49.libboost_system-vc100-mt-gd-1_47.libboost_system-vc100-mt-gd-1_49.libboost_thread-vc100-mt-gd-1_47.libboost_thread-vc100-mt-gd-1_49.libboost_timer-vc100-mt-gd-1_49.libboost_unit_test_framework-vc100-mt-gd-1_49.libboost_wave-vc100-mt-gd-1_49.libboost_wserialization-vc100-mt-gd-1_49.liblibboost_chrono-vc100-mt-gd-1_49.liblibboost_date_time-vc100-mt-gd-1_47.liblibboost_date_time-vc100-mt-gd-1_49.liblibboost_filesystem-vc100-mt-gd-1_47.liblibboost_filesystem-vc100-mt-gd-1_49.liblibboost_graph_parallel-vc100-mt-gd-1_49.liblibboost_iostreams-vc100-mt-gd-1_47.liblibboost_iostreams-vc100-mt-gd-1_49.liblibboost_locale-vc100-mt-gd-1_49.liblibboost_math_c99-vc100-mt-gd-1_49.liblibboost_math_c99f-vc100-mt-gd-1_49.LIBLIBBOOST_MATH_TR1-vc100-mt-gd-1_49.liblibboost_math_tr1f-vc100-mt-gd-1_49.liblibboost_mpi-vc100-mt-gd-1_49.liblibboost_prg_exec_monitor-vc100-mt-gd-1_49.liblibboost_program_options-vc100-mt-gd-1_49.liblibboost_random-vc100-mt-gd-1_49.liblibboost_regex-vc100-mt-gd-1_49.liblibboost_serialization-vc100-mt-gd-1_49.liblibboost_signals-vc100-mt-gd-1_49.liblibboost_system-vc100-mt-gd-1_47.liblibboost_system-vc100-mt-gd-1_49.liblibboost_test_exec_monitor-vc100-mt-gd-1_49.liblibboost_thread-vc100-mt-gd-1_47.liblibboost_thread-vc100-mt-gd-1_49.liblibboost_timer-vc100-mt-gd-1_49.liblibboost_unit_test_framework-vc100-mt-gd-1_49.liblibboost_wave-vc100-mt-gd-1_49.liblibboost_wserialization-vc100-mt-gd-1_49.libvtkalglib-Gd.libvtkcharts-Gd.libvtkcommon-Gd.libvtkdicomparser-GD.LIBVTKEXOIIC-Gd.libvtkexpat-gd.libvtkfiltering-Gd.libvtkfreetype-GD.LIBVTKFTGL-gd.libvtkgenericfiltering-Gd.libvtkgeovis-Gd.libvtkgraphics-Gd.libvtkhdf5-Gd.libvtkhybrid-gd.libvtkimaging-Gd.libvtkinfovis-Gd.libvtkio-Gd.libvtkjpeg-GD.LIBVTKLIBXML2-Gd.libvtkmetaio-GD.LIBVTKNETCDF-Gd.libvtknetcdf_cxx-Gd.libvtkpng-Gd.libvtkproj4-gd.libvtkrendering-Gd.libvtksqlite-Gd.libvtksys-Gd.libvtktiff-gd.libvtkverdict-gd.libvtkviews-gd.libvtkvolumerendering-gd.libvtkwidgets-Gd.libvtkzlib-gd.lib
There are a lot of files here, there can be a quicker way: here take VTK as an example,
Open Cmd-> Enter the 3rdparty\vtk\lib\vtk-5.8 directory into the PCL installation directory input command:dir/b *gd.lib, List.txt
the command means to find the file at the end of the gd.lib and save it to the list.txt document. The current directory will then generate list.txt
Four, Demo
Routines:
#include <pcl/visualization/cloud_viewer.h>#include<iostream>#include<pcl/io/io.h>#include<pcl/io/pcd_io.h>intUser_data;voidVieweroneoff (pcl::visualization::P clvisualizer&Viewer) {Viewer.setbackgroundcolor (0,0,0); PCL::P ointxyz o; O.x=1.0; O.y=0; O.z=0; Viewer.addsphere (O,0.25,"Sphere",0); Std::cout<<"I only run once"<<Std::endl;}voidViewerpsycho (pcl::visualization::P clvisualizer&Viewer) { Staticunsigned count =0; Std::stringstream SS; SS<<"Once per viewer loop:"<< count++; Viewer.removeshape ("text",0); Viewer.addtext (Ss.str (), $, -,"text",0); //fixme:possible race condition here:user_data++;}intMain () {PCL::P ointcloud<PCL::P ointxyzrgba>::P TR Cloud (NewPCL::P OINTCLOUD<PCL::P ointxyzrgba>); Pcl::io::loadpcdfile ("MY_POINT_CLOUD.PCD", *cloud); Pcl::visualization::cloudviewer Viewer ("Cloud Viewer"); //blocks until the cloud is actually renderedViewer.showcloud (Cloud); //Use the following functions-get access to the underlying more advanced/powerful//Pclvisualizer//This would only get called onceviewer.runonvisualizationthreadonce (Vieweroneoff); //This would get called once per visualization iterationViewer.runonvisualizationthread (Viewerpsycho); while(!viewer.wasstopped ()) { //You can also does cool processing here//Fixme:note that's running in a separate the thread from Viewerpsycho//And you should guard against race conditions yourself ...user_data++; } return 0;}
The above is the Point cloud that gets to my desktop with RealSense SR300.
MY_POINT_CLOUD.PCD file Link:http://pan.baidu.com/s/1gfD2lF1 Password:cexi
V. Summary and share
1, PCD reading a little slow, it is said that the PCD data in order to point the way to save the cloud will be better, but I did not try to see how much faster, this remains to be studied.
2, SR300 Direct access to the depth image and RGB image coordinates are biased, this consideration how to do alignment.
3, If the project configuration on the SR300 SDK and OpenCV, we do not need to save the PCD in another project first The file is read again, the middle can save a lot of steps.
4, PCL learning materials are still very few, at present heard better also only "point Cloud library PCL Learning Tutorial", I also bought a copy, slowly learn it.
PCL 1.60 +windows+vs2010 Installation and configuration