本文使用的安装程序已搬运到墙内
百度云链接 密码:hsw1
版本:2015/03/18
- PCL 1.7.2 release
- Boost 1.57.0
- Eigen 3.2.4
- FLANN 1.8.4
- VTK 6.2.0
- QHull 2012.1
安装
修改系统环境变量
添加PCL_ROOT
值为PCL安装位置
修改Path
添加;%PCL_ROOT%\bin;%PCL_ROOT%\3rdParty\FLANN\bin;%PCL_ROOT%\3rdParty\VTK\bin
打开vs2013,新建C++空项目,直接添加cpp文件
或复制如下代码
<code class="language-C++ hljs lasso has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">#include</span> <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;"><</span>pcl/visualization/cloud_viewer<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>h<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">></span> <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">#include</span> <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;"><</span>iostream<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">></span> <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">#include</span> <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;"><</span>pcl/io/io<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>h<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">></span> <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">#include</span> <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;"><</span>pcl/io/pcd_io<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>h<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">></span> int user_data; <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">void</span> viewerOneOff(pcl<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;">::visualization</span><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;">::PCLVisualizer</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">&</span> viewer) { viewer<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>setBackgroundColor(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.0</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.5</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.0</span>); pcl<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;">::PointXYZ</span> o; o<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>x <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.0</span>; o<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>y <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; o<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>z <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; viewer<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>addSphere(o, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.25</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"sphere"</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>); std<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;">::cout</span> <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;"><<</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"i only run once"</span> <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;"><<</span> std<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;">::endl</span>; } <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">void</span> viewerPsycho(pcl<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;">::visualization</span><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;">::PCLVisualizer</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">&</span> viewer) { static unsigned count <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; std<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;">::stringstream</span> ss; ss <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;"><<</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Once per viewer loop: "</span> <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;"><<</span> count<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">++</span>; viewer<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>removeShape(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"text"</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>); viewer<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>addText(ss<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>str(), <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">200</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">300</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"text"</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>); <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//FIXME: possible race condition here:</span> user_data<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">++</span>; } int main() { pcl<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;">::PointCloud</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;"><</span>pcl<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;">::PointXYZRGBA</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">></span><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;">::Ptr</span> cloud(<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">new</span> pcl<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;">::PointCloud</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;"><</span>pcl<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;">::PointXYZRGBA</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">></span>); pcl<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;">::io</span><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;">::loadPCDFile</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"example.pcd的位置"</span>, <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">*</span>cloud); pcl<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;">::visualization</span><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;">::CloudViewer</span> viewer(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Cloud Viewer"</span>); <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//blocks until the cloud is actually rendered</span> viewer<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>showCloud(cloud); <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//use the following functions to get access to the underlying more advanced/powerful</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//PCLVisualizer</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//This will only get called once</span> viewer<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>runOnVisualizationThreadOnce(viewerOneOff); <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//This will get called once per visualization iteration</span> viewer<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>runOnVisualizationThread(viewerPsycho); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">while</span> (<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">!</span>viewer<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>wasStopped()) { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//you can also do cool processing here</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//FIXME: Note that this is running in a separate thread from viewerPsycho</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//and you should guard against race conditions yourself...</span> user_data<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">++</span>; } <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li><li style="box-sizing: border-box; padding: 0px 5px;">54</li><li style="box-sizing: border-box; padding: 0px 5px;">55</li><li style="box-sizing: border-box; padding: 0px 5px;">56</li><li style="box-sizing: border-box; padding: 0px 5px;">57</li><li style="box-sizing: border-box; padding: 0px 5px;">58</li><li style="box-sizing: border-box; padding: 0px 5px;">59</li></ul>
选择下载的PCL.props
运行,效果如下:
—————————————————————————————
2015.05.08更新
常见错误 LNK2019: 无法解析的外部符号
1.确实是包含文件 库文件目录写错了
2.没安装在默认目录
我遇到 安装在其他盘,然后 error LNK2019 ,error C2039的情况了
3.安装版本不对
系统32位,安装的是64的。包诸如此类
—————————————————————————————
2015.05.14 更新
关于没有OpenNI
原博主的说法是:
-
Grabber
This PCL All-in-one Installer does not include the OpenNI v1.x.
For this reason, pcl::OpenNIGrabber is not available.(OpenNI v1.x support until the Visual Studio 2010.)
However, I publish the Grabber that depends only on the Kinect for Windows SDK v1.x / v2.x.
You can easy to use the Kinect sensor with PCL using KinectGrabber / Kinect2Grabber.
KinectGrabber based on Kinect SDK v1.x | GitHub
Kinect2Grabber based on Kinect SDK v2.x | GitHub -
HOW TO USE KINECTGRABBER/KINECT2GRABBER WITH PCL::VISUALIZATION::PCLVISUALIZER
pcl::visualization::PCLVisualizer is PCL’s full-featured visualisation class.
While more complex to use than the >pcl::visualization::CloudViewer, it is also more powerful, offering features such as displaying normals, drawing shapes and multiple viewports.
Drawing the Point Cloud using PCLVisualizer with KinectGrabber
Drawing the Point Cloud using PCLVisualizer with Kinect2Grabber -
关于原因
“PCL 1.7.2 seems not stable when including OpenNI2.
I have updated the PCL All-in-one Installer without OpenNI2. (OpenNI2Grabber is not available. You can use Kinect/Kinect2 Grabber).”
- KinectGrabber / Kinect2Grabberde的使用:
<code class="language-C++ hljs lasso has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//#include <pcl/io/openni_grabber.h></span> <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">#include</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"kinect_grabber.h"</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//pcl::Grabber* interface = new pcl::OpenNIGrabber();</span> pcl<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;">::Grabber</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">*</span> interface <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span> <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">new</span> pcl<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;">::KinectGrabber</span>();</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li></ul>
<code class="hljs lasso has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//#include <pcl/io/openni_grabber.h></span> <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">#include</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"kinect2_grabber.h"</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//pcl::Grabber* interface = new pcl::OpenNIGrabber();</span> pcl<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;">::Grabber</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">*</span> interface <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span> <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">new</span> pcl<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;">::Kinect2Grabber</span>();</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li></ul>
版权声明:本文为博主原创文章,未经博主允许不得转载。