【點雲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
相關文章
- PCL(19)點雲顯示
- 在c++MFC下用PCL顯示操作點雲檔案 MFC對話方塊顯示操作PCL點雲C++
- PCL 計算點雲的面積和體積
- PCL(26)cropHull任意多邊形內部點雲提取
- DNS入門學習:什麼是雲解析?雲解析有哪些特點?DNS
- 點亮點陣以及點陣的影像顯示
- css3 大於3行的顯示點點點CSSS3
- CAD等分不顯示等分點
- 社群 - 所有節點,進入節點頁面返回中間頁顯示蒙層
- 點選日曆顯示日期jqueryjQuery
- 點量雲實時雲渲染革新雲看車
- Docker入門的億點點學習Docker
- ActiveMQ入門系列二:入門程式碼例項(點對點模式)MQ模式
- 阿里雲香港節點全面故障給我們的啟示阿里
- 雲端計算的特點包括哪幾方面?linux運維工程師入門Linux運維工程師
- 雲端計算教程學習入門影片: IaaS、PaaS、SaaS知識點詳解
- CAD定數等分不顯示等分點
- 將帶標籤的點雲輸入並進行歐幾里得聚類處理(自定義點雲)聚類
- 踩坑記錄:windows11下使用 VS2022 和 PCL1.14.1 配置點雲開發環境Windows開發環境
- 點雲配準基礎
- rancher新增k8s節點時顯示節點已新增K8S
- Webview載入html後,數字會顯示藍色可點選呼叫WebViewHTML
- CSS點選隱藏和顯示div效果CSS
- Windows下使用TensorBoard顯示幾個注意點WindowsORB
- 阿里雲上雲第一課,助力 HTML入門阿里HTML
- 什麼是雲解析?雲解析有哪些特點?
- anki 模板cloze 多次挖空 點選一次顯示一次 點對應的顯示一個(自帶的會全部顯示出來)
- 雲伺服器顯示異常登入失敗是什麼原因伺服器
- React入門知識點整理React
- 谷歌雲大會亮點|AI客服中心落地、AutoML推新、TPU 3.0進入谷歌雲谷歌AITOML
- 如何入門雲端計算?
- 雲桌面的幾大特點!
- MxDraw雲圖點選事件教程事件
- 靠近阿里雲–視訊點播阿里
- 獨立顯示卡與整合顯示卡的區別 獨立顯示卡與整合顯示卡優缺點介紹
- 微信小程式image載入成功前顯示預設佔點陣圖微信小程式
- 做點華為雲代理業務,掙點小收入
- 鐳射雷達點雲3D模型點雲資料之ply檔案格式3D模型