点云数据处理常用外部库(C++/Windows)的项目配置

一、点云数据处理常用外部库(C++版本)的下载安装与项目配置

(一)PCL

        基于VS2019编程平台的PCL外部库下载安装及项目配置已有大量博客,本文不再赘述。具体下载安装及项目配置流程可参考外部库编译配置参考资料/*1*/ 。需要注意的是,自PCL 1.13.0版本以来,采用的是msvc2022编译器,而本文是基于VS2019的msvc2019编译器配置的,因此选择版本PCL 1.12.1。

1、项目配置测试代码

#include <iostream>
#include <vector>
#include <ctime>
#include <pcl/point_cloud.h>
#include <pcl/octree/octree.h>
#include <boost/thread/thread.hpp>
#include <pcl/visualization/pcl_visualizer.h>
using namespace std;
int main(int argc, char** argv)
{srand((unsigned int)time(NULL));pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);// 创建点云数据cloud->width = 1000;cloud->height = 1;cloud->points.resize(cloud->width * cloud->height);for (size_t i = 0; i < cloud->points.size(); ++i){cloud->points[i].x = 1024.0f * rand() / (RAND_MAX + 1.0f);cloud->points[i].y = 1024.0f * rand() / (RAND_MAX + 1.0f);cloud->points[i].z = 1024.0f * rand() / (RAND_MAX + 1.0f);}pcl::octree::OctreePointCloudSearch<pcl::PointXYZ> octree(0.1);octree.setInputCloud(cloud);octree.addPointsFromInputCloud();pcl::PointXYZ searchPoint;searchPoint.x = 1024.0f * rand() / (RAND_MAX + 1.0f);searchPoint.y = 1024.0f * rand() / (RAND_MAX + 1.0f);searchPoint.z = 1024.0f * rand() / (RAND_MAX + 1.0f);//半径内近邻搜索vector<int>pointIdxRadiusSearch;vector<float>pointRadiusSquaredDistance;float radius = 256.0f * rand() / (RAND_MAX + 1.0f);cout << "Neighbors within radius search at (" << searchPoint.x<< " " << searchPoint.y<< " " << searchPoint.z<< ") with radius=" << radius << endl;if (octree.radiusSearch(searchPoint, radius, pointIdxRadiusSearch, pointRadiusSquaredDistance) > 0){for (size_t i = 0; i < pointIdxRadiusSearch.size(); ++i)cout << " " << cloud->points[pointIdxRadiusSearch[i]].x<< " " << cloud->points[pointIdxRadiusSearch[i]].y<< " " << cloud->points[pointIdxRadiusSearch[i]].z<< " (squared distance: " << pointRadiusSquaredDistance[i] << ")" << endl;}// 初始化点云可视化对象boost::shared_ptr<pcl::visualization::PCLVisualizer>viewer(new pcl::visualization::PCLVisualizer("pcl cloud point"));viewer->setBackgroundColor(0, 0, 0); //设置背景颜色为黑色// 对点云着色可视化 (red).pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ>target_color(cloud, 255, 0, 0);viewer->addPointCloud<pcl::PointXYZ>(cloud, target_color, "target cloud");viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "target cloud");// 等待直到可视化窗口关闭while (!viewer->wasStopped()){viewer->spinOnce(100);boost::this_thread::sleep(boost::posix_time::microseconds(1000));}return 0;
}

2、项目配置测试结果

图一 PCL项目配置测试代码结果图

(二)Open3D

        Open3D具有Python和C++两个版本,由于Python较于C++易于学习且外部库下载安装极其简单,因此,Open3D的Python版本更多被人们使用。对于C++版本的Open3D下载安装及项目配置而言,CSDN平台目前更多的是针对源码进行编译及配置,具体下载安装及项目配置流程可参考外部库编译配置参考资料/*3*/ /*2*//*4*/,而其它方法较少。因此,本文提供一种基于Windows(×64)系统直接使用官方编译好的C++版本的Open3D_Release的二进制包文档方法。

直接下载安装二进制包文档并项目配置的方法流程

1、open3d-devel-windows-amd64-0.18.0.zip文件下载

图二  基于Windows系统Open3D的C++编译后二进制包文档下载流程图

2、项目环境配置

        针对步骤五,既可以通过在项目属性页-调试-环境中编辑环境值,也可以通过添加系统环境变量解决。值得注意的是,系统环境变量通常具有最大设置字节数,因此,若该外部库常用于不同的项目即可选择添加系统环境变量;反之,可选择在项目属性页-调试-环境中编辑环境值。不同的更新版本可能具有不同的项目环境配置,具体可依据报错提示尝试或使用进阶CMake管理。

图三 项目环境配置流程图示

3、项目配置测试代码

#include <iostream>
#include <random>
#include <Open3D/Open3D.h>using namespace std;int main(int argc, char* argv[])
{auto noise_cloud = std::make_shared<open3d::geometry::PointCloud>();int N = 10000;noise_cloud->points_.resize(N);normal_distribution<> norm{ 0, 0.002 };random_device rd;default_random_engine rng{ rd() };for (size_t i = 0; i < N; ++i){noise_cloud->points_[i][0] = norm(rng);noise_cloud->points_[i][1] = norm(rng);noise_cloud->points_[i][2] = norm(rng);}open3d::io::WritePointCloudToPCD("Gaiss_noise.pcd", *noise_cloud, false);open3d::visualization::DrawGeometries({ noise_cloud }, "PointCloud", 1600, 900);return 0;
}

4、项目配置测试结果

图四 Open3d_C++项目配置测试代码结果图

(三)OpenCV

         基于VS2019编程平台的OpenCV外部库下载安装及项目配置已有大量博客,本文不再赘述。具体下载安装及项目配置流程可参考外部库编译配置参考资料/*5*/

1、项目配置测试代码

// 测试代码一#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv)
{std::cout << "OpenCV_Version: " << CV_VERSION << std::endl;cv::waitKey(0);return 0;
}// 测试代码二#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv)
{//读取图片Mat img = imread("C:\\Users\\hasee\\Pictures\\Saved Pictures\\icon.jpg", cv::IMREAD_UNCHANGED);if (img.empty()) {std::cout << "加载图片失败" << std::endl;}else {imshow("image", img);  }waitKey(0);            return 0;
}

2、项目配置测试结果

图五 OpenCV_C++项目配置测试代码结果图

(四)注意事项

综合记录

1、#include指令可以使用双引号或尖括号来指定要包含的文件的路径,双引号""表示使用相对路径或绝对路径,尖括号表示使用绝对路径或系统路径;

2、设置调试环境,既可以直接添加系统环境变量(系统环境变量具有最大设置字节数),也可以通过在VS2019的项目属性页-调试-环境中编辑环境值。

外部库编译配置参考资料:

/*1*/  PCL1.9.1下载与配置+Visual Studio2017_pcl下载server-CSDN博客

/*2*/  Win10 系统下VisualStudio2019 配置Open3D-0.13.0(C++)_c++编译open3d-CSDN博客

/*3*/  windows10编译open3d 0.13_open3d官网-CSDN博客

/*4*/ vs2019配置运行open3d例子_vs窗体如何打开3d文件-CSDN博客

/*5*/  38、OpenCV之C++教程_opencv c++-CSDN博客

外部库API使用手册:

/**1**/ Introduction — Point Cloud Library 0.0 documentation

/**2**/ Open3D (C++ API): Main Page

/**3**/ https://docs.opencv.org/4.9.0/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2810281.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

OPENSSL-PKCS7入门知识介绍

1 PKCS7数据结构说明 p7包括6种数据内容&#xff1a;数据(data),签名数据&#xff08;sign&#xff09;&#xff0c;数字信封数据&#xff08;enveloped&#xff09;&#xff0c;签名数字信封数据&#xff08;signed_and_enveloped&#xff09;&#xff0c;摘要数据&#xff08…

ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘无密码如何解决

1.修改my.cnf配置文件 &#xff08;1&#xff09;找到my.cnf位置&#xff0c;在[mysqld]下面添加skip-grant-tables cd / vim /etc/my.cnf &#xff08;2&#xff09;添加完成后保存&#xff0c;并重启mysql服务 按下esc 输入:wq 执行 servcie mysqld restart 2.进入mysql数据…

300分钟吃透分布式缓存-14讲:大数据时代,MC如何应对新的常见问题?

大数据时代 Memcached 经典问题 随着互联网的快速发展和普及&#xff0c;人类进入了大数据时代。在大数据时代&#xff0c;移动设备全面融入了人们的工作和生活&#xff0c;各种数据以前所未有的 速度被生产、挖掘和消费。移动互联网系统也不断演进和发展&#xff0c;存储、计…

Matlab论文插图绘制模板第138期—极坐标直方图

在之前的文章中&#xff0c;分享了Matlab一系列极坐标下的插图绘制模板&#xff1a; 本期再来分享一下极坐标直方图的绘制模板。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据代码』已上传资源群中&#xff0c;加群的朋友请自行下载。有需要的朋友可以…

MySQL多实例与Mycat分布式读写分离的架构实践

文章目录 1.Mycat读写分离分布式架构规划2.在两台服务器中搭建八个MySQL实例2.1.安装MySQL软件2.2.创建每个MySQL实例的数据目录并初始化2.3.准备每个实例的配置文件2.4.准备每个实例的启动脚本2.6启动每台机器的MySQL多实例2.7.为每个MySQL实例设置密码2.8.查看每个MySQL实例的…

项目启动∣新一代亿元级国民零食品牌「比比赞」携手企企通,合力打造企业级数字化采购与供应链管理平台

为进一步提升企业的核心供应链一体化协同管理&#xff0c;助力企业效益提升&#xff0c;近日&#xff0c;泉州市丰泽区尚客食品有限公司&#xff08;以下简称“比比赞”&#xff09;与企企通携手&#xff0c;成功召开SRM项目启动会。 会议期间&#xff0c;双方对项目背景、项目…

Oracle内存计算应用模式

前言 内存计算是利用内存来加速数据访问和应用的性能&#xff0c;并降低应用开发复杂度的技术。近十年来&#xff0c;随着软硬件技术的发展和用户需求的成熟&#xff0c;内存计算技术已经得到了广泛地应用。 Oracle在内存计算领域具有非常重要的地位&#xff0c;这主要得益于…

开了抖店该怎么玩?不知道运营流程的,今天一文带你了解!

大家好&#xff0c;我是电商小布。 在电商的快速发展下&#xff0c;越来越多的新手小伙伴开始加入其中。 抖音小店作为当前的低成本创业项目&#xff0c;吸引到了很多的新手朋友加入其中。 但是开店后怎么玩&#xff0c;如何做好运营操作呢&#xff1f; 今天&#xff0c;小…

WampServer环境下载安装并结合内网穿透实现远程访问管理界面

文章目录 前言1.WampServer下载安装2.WampServer启动3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 Wamp 是一个 Windows系统下的 Apache PHP Mysql 集成安装环境&#xff0c;是一组常用来…

AI论文速读 | 【综述】(LLM4TS)大语言模型用于时间序列

题目&#xff1a;Large Language Models for Time Series: A Survey 作者&#xff1a;Xiyuan Zhang , Ranak Roy Chowdhury , Rajesh K. Gupta and Jingbo Shang 机构&#xff1a;加州大学圣地亚哥分校&#xff08;UCSD&#xff09; 网址&#xff1a;https://arxiv.org/abs/…

CleanMyMac2024一款备受赞誉的mac电脑垃圾清理软件

在数字世界中&#xff0c;我们的Mac不仅仅是一台电脑&#xff0c;更是我们工作、娱乐和生活的得力助手。然而&#xff0c;随着时间的推移&#xff0c;系统垃圾、无用文件和缓存不断堆积&#xff0c;让Mac变得迟钝&#xff0c;甚至威胁到我们的数据安全。此刻&#xff0c;您需要…

《Docker 简易速速上手小册》第6章 Docker 网络与安全(2024 最新版)

文章目录 6.1 Docker 网络概念6.1.1 重点基础知识6.1.2 重点案例&#xff1a;基于 Flask 的微服务6.1.3 拓展案例 1&#xff1a;容器间的直接通信6.1.4 拓展案例 2&#xff1a;跨主机容器通信 6.2 配置与管理网络6.2.1 重点基础知识6.2.2 重点案例&#xff1a;配置 Flask 应用的…

vite搭配vue2创建工程

一、安装vite npm init vite2.8.0 vite默认支持的是vue3&#xff0c; 这里选择框架和版本vanilla&#xff0c; 方便以后自己安装vue2. 二、修改package.json 默认生成的pacakage.json文件 {"name": "vite-project","private": true,"v…

开源项目---集成系信息管理平台

文章目录 概要整体架构流程内置的功能介绍系统演示小结 概要 提示&#xff1a;开源信息管理平台 主要是进行的是对于大部分的管理信息平台的综合&#xff0c;以及进行相关的开源项目的改造和升级&#xff0c;添加新的功能的同时&#xff0c;也是为了更好的让大家一起学习&#…

优优嗨聚集团:法律咨询服务,守护您生活的每一份权益

在当今社会&#xff0c;随着法治意识的日益增强&#xff0c;法律咨询服务的重要性愈发凸显。无论是个人还是企业&#xff0c;面对纷繁复杂的法律环境&#xff0c;专业的法律咨询服务成为了不可或缺的护航者。 一、法律咨询服务&#xff1a;个人权益的守护者 在日常生活中&…

手机和windows的便签怎么共享账号使用

在忙碌的生活中&#xff0c;我经常需要在手机和电脑之间同步记事信息。可是&#xff0c;每次当我在手机上记下一些重要事项后&#xff0c;想要在电脑上查看或继续编辑时&#xff0c;总是遇到各种麻烦。因为手机和电脑上的便签软件各不相同&#xff0c;无法实现账号共享和内容同…

Object中的hashCode()

让hashcode方法的返回值为地址 vm参数中输入-XX:UnlockExperimentalVMOptions -XX:hashCode4&#xff0c;如下图&#xff1a; 参考 搞懂JAVAObject中的hashCode()_java_脚本之家 JDK核心JAVA源码解析(9) - hashcode 方法 - 知乎

护眼台灯怎么选?五大2024年口碑台灯力荐!

护眼台灯算得上是近年来家长为孩子置办最多的用品之一&#xff0c;作为一名十分关注各类市场的测评师&#xff0c;我时刻关注各种家电、灯具的走向&#xff0c;也结合实际的使用&#xff0c;为广大用户提供专业深度的护眼台灯测评。对于护眼台灯&#xff0c;消费者的评价褒贬不…

git之远程操作

一.分布式版本控制系统 分布式版本控制系统通常也有⼀台充当“中央服务器”的电脑&#xff0c;但这个服务器的作⽤仅仅是⽤来⽅便“交换”⼤家的修改&#xff0c;没有它⼤家也⼀样⼲活&#xff0c;只是交换修改不⽅便⽽已。有了这个“中央服务器”的电脑&#xff0c;这样就不怕…

如何在本地部署密码管理软件bitwarden并结合cpolar实现远程同步

文章目录 1. 拉取Bitwarden镜像2. 运行Bitwarden镜像3. 本地访问4. 群晖安装Cpolar5. 配置公网地址6. 公网访问Bitwarden7. 固定公网地址8. 浏览器密码托管设置 Bitwarden是一个密码管理器应用程序&#xff0c;适用于在多个设备和浏览器之间同步密码。自建密码管理软件bitwarde…