【點雲PCL入門】PCL+QT+VTK顯示點雲
1.讀取TXT格式點雲(Qt ifstream)
標頭檔案
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL)
VTK_MODULE_INIT(vtkInteractionStyle)
#include <vtkRenderWindow.h>
#include<pcl/point_types.h>
#include<pcl/visualization/pcl_visualizer.h>
#include<pcl/io/pcd_io.h>
ui.setupUi(this);
QString str = tr("PCL+QT+VTK點雲顯示");
this->setWindowTitle(str);
//pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud;
//boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer;
cloud.reset(new pcl::PointCloud<pcl::PointXYZRGB>);
viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));
/*QString filename = "./1.pcd";
if(pcl::io::loadPCDFile(filename.toStdString(),*cloud)==-1)
{
cout << "載入文件失敗" << endl;
}*/
//讀TXT點雲文件
std::string filename = "./1.txt";
ifstream infile;
infile.open(filename.data());
assert(infile.is_open());
std::string s;
while (getline(infile,s))
{
QString ss, s1, s2, s3;
ss = tr(s.c_str());
s1 = ss.section(" ", 0, 0);
s2 = ss.section(" ", 1, 1);
s3 = ss.section(" ", 2, 2);
pcl::PointXYZRGB current_point;
current_point.x = s1.toFloat();
current_point.y = s2.toFloat();
current_point.z = s3.toFloat();
cloud->points.push_back(current_point);
}
infile.close();
//初始化顏色及大小資訊
int red = 255;
int green = 255;
int blue = 255;
float size = 2.0;
//將PCLVisualizer與QVTKWidget聯絡起來
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZRGB>single_color(red, green, blue);
viewer->addPointCloud<pcl::PointXYZRGB>(cloud, single_color, "cloud");
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, size, "cloud");
ui.qvtkWidget->SetRenderWindow(viewer->getRenderWindow());//將渲染輸出到外掛
viewer->setupInteractor(ui.qvtkWidget->GetInteractor(),ui.qvtkWidget->GetRenderWindow());//將外掛的互動器傳遞給PCLVisualizer
ui.qvtkWidget->update();
2.讀取PCD格式點雲
ui.setupUi(this);
QString str = tr("PCL+QT+VTK點雲顯示");
this->setWindowTitle(str);
//pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud;
//boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer;
cloud.reset(new pcl::PointCloud<pcl::PointXYZRGB>);
viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));
QString filename = "./1.pcd";
if(pcl::io::loadPCDFile(filename.toStdString(),*cloud)==-1)
{
cout << "載入文件失敗" << endl;
}
//初始化顏色及大小資訊
int red = 255;
int green = 255;
int blue = 255;
float size = 2.0;
//將PCLVisualizer與QVTKWidget聯絡起來
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZRGB>single_color(red, green, blue);
viewer->addPointCloud<pcl::PointXYZRGB>(cloud, single_color, "cloud");
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, size, "cloud");
ui.qvtkWidget->SetRenderWindow(viewer->getRenderWindow());//將渲染輸出到外掛
viewer->setupInteractor(ui.qvtkWidget->GetInteractor(),ui.qvtkWidget->GetRenderWindow());//將外掛的互動器傳遞給PCLVisualizer
ui.qvtkWidget->update();
參考
1.https://blog.csdn.net/qq_33656619/article/details/106630322
2.https://blog.csdn.net/qinqinxiansheng/article/details/104272200
相關文章
- 在c++MFC下用PCL顯示操作點雲檔案 MFC對話方塊顯示操作PCL點雲C++
- PCL: Registration模組之IterativeClosestPoint點雲配準
- PCL 計算點雲的面積和體積
- DNS入門學習:什麼是雲解析?雲解析有哪些特點?DNS
- 點亮點陣以及點陣的影像顯示
- Delphi入門點點滴滴
- 將帶標籤的點雲輸入並進行歐幾里得聚類處理(自定義點雲)聚類
- 模型的一個點顯示在原點模型
- 將單點登入擴充套件到雲套件
- css3 大於3行的顯示點點點CSSS3
- 社群 - 所有節點,進入節點頁面返回中間頁顯示蒙層
- 點雲配準基礎
- 做點華為雲代理業務,掙點小收入
- 點選日曆顯示日期jqueryjQuery
- Docker入門的億點點學習Docker
- 什麼是雲解析?雲解析有哪些特點?
- ActiveMQ入門系列二:入門程式碼例項(點對點模式)MQ模式
- 阿里雲香港節點全面故障給我們的啟示阿里
- MxDraw雲圖點選事件教程事件
- 阿里雲ECSDockerMachineDriver入門指南阿里DockerMac
- 什麼是DNS雲解析?雲解析有哪些特點?DNS
- 華為雲軟體開發雲VS開發痛點=?
- 登陸雲主機顯示字元畫面字元
- 阿里雲上雲第一課,助力 HTML入門阿里HTML
- 雲伺服器顯示異常登入失敗是什麼原因伺服器
- 鐳射雷達點雲3D模型點雲資料之ply檔案格式3D模型
- 用WindowedMode顯示點陣圖圖象(轉)
- 谷歌雲大會亮點|AI客服中心落地、AutoML推新、TPU 3.0進入谷歌雲谷歌AITOML
- 靠近阿里雲–視訊點播阿里
- 雲伺服器的優缺點伺服器
- Neon 期待點亮雲 Postgres 市場
- 部署雲應用前注意六點
- MxDraw雲圖快速入門手冊
- OSG入門——繪製地球雲圖
- rancher新增k8s節點時顯示節點已新增K8S
- 轉:zTree高階入門:如何通過擴充套件節點的屬性來達到是否顯示節點的刪除編輯等圖示(按鈕)...套件
- 微信小程式image載入成功前顯示預設佔點陣圖微信小程式
- Webview載入html後,數字會顯示藍色可點選呼叫WebViewHTML