当前位置: 首页 > news >正文

[C++][pcl]pcl安装后测试代码3

测试环境:

vs2019

pcl==1.12.1

代码:

#include<iostream>
#include <thread>#include <pcl/common/common_headers.h>
#include <pcl/features/normal_3d.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/console/parse.h>
#include <boost/current_function.hpp>using namespace pcl;int main(int argc, char** argv)
{// 1. 创建和设置可视化窗口std::string strWinName = "3D Viewer", strWinTitle = "Point Cloud Viewer";int scnWidth = 1024, scnHeight = 800;visualization::PCLVisualizer::Ptr viewer(new visualization::PCLVisualizer(strWinName));viewer->setWindowName(strWinTitle);viewer->initCameraParameters(); // set camera before set sizeviewer->setPosition(0, 0);viewer->setSize(scnWidth, scnHeight);viewer->setShowFPS(false);// viewportsint vMenu(0), v1(0), v2(0);viewer->createViewPort(0.0, 0.0, 1.0, 0.2, vMenu); // used as interfaceviewer->createViewPort(0.0, 0.2, 0.5, 1.0, v1);viewer->createViewPort(0.5, 0.2, 1.0, 1.0, v2);// Background Colorviewer->setBackgroundColor(0.8, 0.8, 0.8, vMenu); // light greyviewer->setBackgroundColor(0.1, 0.1, 0.1, v1); // dark greyviewer->setBackgroundColor(0.2, 0.2, 0.2, v2); // dark grey// camerasviewer->createViewPortCamera(v1);viewer->createViewPortCamera(v2);double pos[3] = { 6,0,0 }; // camera at X-axisdouble foc[3] = { 0,0,0 }; // viewpoint at orgindouble up[3] = { 0,0,1 };  // up is Z-axisviewer->setCameraPosition(pos[0], pos[1], pos[2], foc[0], foc[1], foc[2], up[0], up[1], up[2]);// check cameras//std::vector<visualization::Camera> cams;//viewer->getCameras(cams);// coordinatesviewer->addCoordinateSystem(1.0, "ref_v1", v1);viewer->addCoordinateSystem(1.0, "ref_v2", v2);// 2. 创建点云数据和添加点云。PointCloud<PointXYZ>::Ptr cloud_ptr(new PointCloud<PointXYZ>);PointCloud<PointXYZRGB>::Ptr cloud_color_ptr(new PointCloud<PointXYZRGB>);std::uint8_t r(255), g(15), b(15);for (float z = -1.0; z <= 1.0; z += 0.05){for (float angle = 0.0; angle <= 360.0; angle += 5.0){pcl::PointXYZ basic_point;basic_point.x = 0.5 * std::cos(pcl::deg2rad(angle));basic_point.y = sinf(pcl::deg2rad(angle));basic_point.z = z;cloud_ptr->points.push_back(basic_point); // 将每个点输入点云pcl::PointXYZRGB point;point.x = basic_point.x;point.y = basic_point.y;point.z = basic_point.z;std::uint32_t rgb = (static_cast<std::uint32_t>(r) << 16 |static_cast<std::uint32_t>(g) << 8 | static_cast<std::uint32_t>(b));point.rgb = *reinterpret_cast<float*>(&rgb);cloud_color_ptr->points.push_back(point); // 将每个点输入点云}if (z < 0.0){r -= 12; // light red at -|z| g += 12; // light green at 0}else{g -= 12; // light green at 0b += 12; // light blue at +|z|}}cloud_ptr->width = cloud_ptr->size(); // 无规则点云的width为点数cloud_ptr->height = 1;cloud_color_ptr->width = cloud_color_ptr->size(); // 无规则点云的width为点数cloud_color_ptr->height = 1;bool ret = viewer->addPointCloud<PointXYZ>(cloud_ptr, "cloud1"); // 白色点云if (ret){double clrR = 0, clrG = 0, clrB = 1, szPoint = 3;viewer->setPointCloudRenderingProperties(visualization::PCL_VISUALIZER_COLOR, clrR, clrG, clrB, "cloud1"); // 设置点云颜色viewer->setPointCloudRenderingProperties(visualization::PCL_VISUALIZER_POINT_SIZE, szPoint, "cloud1"); // 设置大小}elseviewer->updatePointCloud<PointXYZ>(cloud_ptr, "cloud1");//3. 进入主循环while (!viewer->wasStopped()){// 如果点云不断更新,在这里添加点云// 如果需要改变视角,在这里设置相机viewer->spinOnce(100, true);Sleep(100);}
}

演示结果:

http://www.lryc.cn/news/155881.html

相关文章:

  • 在WSL下使用makefile运行modelsim进行混合编译
  • idea 常用插件和常用快捷键 - 记录
  • IDEA报错:Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found
  • C++——Vector:push_back和emplace_back的区别,测试写入1GB大数据时的性能差距
  • C/C++/QT/Python/MATLAB获取文件行数的示例
  • mysql的binlog參數詳解
  • 【SpringSecurity】九、Base64与JWT
  • Python的io模块
  • CSS---flex布局
  • java线程和go协程
  • JAVA 时间戳
  • 层次分析法(matlab实现)
  • python selenium 自动化登录页面
  • 【Linux】高级IO --- 多路转接,select,poll,epoll
  • anaconda navigator打不开,一直在loading画面
  • 【Java基础】深入理解反射、反射的应用(工厂模式、代理模式)
  • VUE 项目 nginx部署
  • Hashtable和HashMap、ConcurrentHashMap 之间的区别
  • 包管理工具--》npm的配置及使用(二)
  • 【Linux】多线程2——线程互斥与同步/多线程应用
  • Python中的函数式编程是什么?
  • 8月《中国数据库行业分析报告》已发布,聚焦数据仓库、首发【全球数据仓库产业图谱】
  • TikTok Shop|如何成为定邀卖家?
  • C++二级题目6
  • 南方科技大学博士研究生奖助学金,深圳大学
  • QT 使用信号与槽实现界面跳转
  • Burp插件HaE与Authz用法
  • element+vue table表格全部数据和已选数据联动
  • vue 防抖与节流用法
  • IntelliJ IDEA创建Web项目并使用Web服务器----Tomcat