真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PCL點(diǎn)云文件生成與讀取-創(chuàng)新互聯(lián)

提要

   PCL中創(chuàng)造了一種用于描述空間點(diǎn)集的文件  -  PCD.關(guān)于PCD的簡介,可以參考這里 - http://pointclouds.org/documentation/tutorials/pcd_file_format.php

成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、成都做網(wǎng)站與策劃設(shè)計,黑山網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:黑山等地區(qū)。黑山做網(wǎng)站價格咨詢:13518219792

今天要做的是最簡單的事情 - PCD文件的生產(chǎn)與讀取。

環(huán)境:Win7 64bit VS2010 PCL1.7

PCL編譯參考這里 - Window7下手動編譯最新版的PCL庫

PCD文件生成

   官網(wǎng)推薦的是用cmake來管理工程,在windows中,我們可以通過Cmakegui來生成VS2010的工程,然后導(dǎo)入。這樣就免去了在VS中各種添加lib,頭文件之苦了 ^^

   首先創(chuàng)建主程序 pcd_write.cpp ,隨便找個記事本寫一下就可以了,代碼如下:

#include  #include  #include  #include  #include  using namespace std;   int main (int argc, char** argv) {   pcl::PointCloud cloud;   // Fill in the cloud data   cloud.width    = 5;   cloud.height   = 1;   cloud.is_dense = false;   cloud.points.resize (cloud.width * cloud.height);    for (size_t i = 0; i < cloud.points.size (); ++i)   {     cloud.points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);     cloud.points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);     cloud.points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);   }    pcl::io::savePCDFileASCII ("test_pcd.pcd", cloud);   std::cerr << "Saved " << cloud.points.size () << " data points to test_pcd.pcd." << std::endl;    for (size_t i = 0; i < cloud.points.size (); ++i)     std::cerr << "    " << cloud.points[i].x << " " << cloud.points[i].y << " " << cloud.points[i].z << std::endl;    getchar();   return (0); }

再創(chuàng)建CMakeLists.txt

cmake_minimum_required(VERSION 2.6 FATAL_ERROR) project(MY_GRAND_PROJECT) find_package(PCL 1.3 REQUIRED COMPONENTS common io) include_directories(${PCL_INCLUDE_DIRS}) link_directories(${PCL_LIBRARY_DIRS}) add_definitions(${PCL_DEFINITIONS}) add_executable(pcd_write_test pcd_write.cpp) target_link_libraries(pcd_write_test ${PCL_COMMON_LIBRARIES} ${PCL_IO_LIBRARIES})

在工程目錄下創(chuàng)建一個build文件夾,接下來打開CMake-gui,將CMakeList.txt托進(jìn)去,Configure->Generate.如果環(huán)境是配置好的話,結(jié)果就像這樣:


如果報錯了,基本是你環(huán)境沒配置好,檢查一下該裝的東西是否都安裝好了,環(huán)境變量是否設(shè)置好。

成功時候在build文件夾下就生成了對應(yīng)的vs2010工程了,直接雙擊打開 MY_GRAND_PROJECT.sln


導(dǎo)入后在cloud_view上 右擊->Set as StartUp Project,如下圖


直接運(yùn)行,效果如下:


工程目錄下就生成了一個 test_pcd.pcd點(diǎn)云文件。

點(diǎn)云文件的讀取

套路和上面的一樣,貼一下代碼就好。

cloud_viewer.cpp

#include  #include  #include  #include   int user_data;  void viewerOneOff (pcl::visualization::PCLVisualizer& viewer) {     viewer.setBackgroundColor (0.0, 0.0, 0.0);     pcl::PointXYZ 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; 	 }  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::Ptr cloud (new pcl::PointCloud);     pcl::io::loadPCDFile ("bunny.pcd", *cloud);      pcl::visualization::CloudViewer viewer("Cloud 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; }


CMakeLists.txt

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)  project(cloud_viewer)  find_package(PCL 1.2 REQUIRED)  include_directories(${PCL_INCLUDE_DIRS}) link_directories(${PCL_LIBRARY_DIRS}) add_definitions(${PCL_DEFINITIONS})  add_executable (cloud_viewer cloud_viewer.cpp) target_link_libraries (cloud_viewer ${PCL_LIBRARIES})

將剛才生成的pcd文件拷貝過來,運(yùn)行的結(jié)果如下:


由于之前生成的pcd里面僅有一些離散的點(diǎn),看的不是很明顯,加載一個Stanford bunny 的點(diǎn)云(PCL目錄下有)來看看。


參考

Using PCL in your own project - http://pointclouds.org/documentation/tutorials/using_pcl_pcl_config.php#using-pcl-pcl-config

讀取 pcd 檔並顯示三維影像 - http://coldnew.github.io/blog/2013/04/12_64cf9.html

The CloudViewer - http://pointclouds.org/documentation/tutorials/cloud_viewer.php#cloud-viewer

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


名稱欄目:PCL點(diǎn)云文件生成與讀取-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://weahome.cn/article/jpcij.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部