上位机图像处理和嵌入式模块部署(树莓派4b使用pcl点云库)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        图像处理,大家都知道它有显著的优点和缺点。优点就是分辨率高,信息丰富。缺点就是,整个图像本身没有深度信息。过去在深度信息这部分,大家一般都倚重于激光雷达,但是激光雷达价格比较高,所以一般用的比较少。但是,现在随着3d camera、多线激光雷达的普及,特别是价格的大幅度下降,这样的话,我们不仅可以使用图像来作为数据输入的来源,还可以使用多线雷达的点云,这一点相比较以前就很方便了。

1、pcl点云库的安装

        在树莓派4b上面安装点云库,还是很方便的,直接用sudo安装即可,

sudo apt-get install libpcl-dev

2、准备CMakeLists.txt

        为了验证pcl点云库是不是真的安装好了,我们有必要编写一个程序验证一下。在这之前,先准备一个cmake的编译脚本CMakeLists.txt,

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

3、准备pcd_write.cpp

        准备好了编译脚本之后,接下来就是源代码文件,这部分可以复用我们之前写过的一个代码,命名为pcd_write.cpp。

 #include <iostream>
 #include <pcl/io/pcd_io.h>
 #include <pcl/point_types.h>
 
 int
   main ()
 {
   pcl::PointCloud<pcl::PointXYZ> cloud;
 
  // Fill in the cloud data
  cloud.width    = 5;
  cloud.height   = 1;
  cloud.is_dense = false;
  cloud.resize (cloud.width * cloud.height);
 
  for (auto& point: cloud)
  {
    point.x = 1024 * rand () / (RAND_MAX + 1.0f);
    point.y = 1024 * rand () / (RAND_MAX + 1.0f);
    point.z = 1024 * rand () / (RAND_MAX + 1.0f);
  }
 
  pcl::io::savePCDFileASCII ("test_pcd.pcd", cloud);
  std::cerr << "Saved " << cloud.size () << " data points to test_pcd.pcd." << std::endl;
 
  for (const auto& point: cloud)
    std::cerr << "    " << point.x << " " << point.y << " " << point.z << std::endl;
 
  return (0);
}

4、生成makefile并编译

        有了CMakeLists.txt和cpp文件,下面就可以开始编译了。编译的方法有两步,即cmake . && make。如果在这过程中没有出现错误的话,就代表我们的编译时ok的。

5、执行

        编译好了,只是第一步,第二步还需要跑起来看一下。如果跑起来也没问题,才能说明pcl安装是正确的。

feixiaoxing@raspberrypi:~/Desktop/pcl $ ./pcd_write
Saved 5 data points to test_pcd.pcd.
    0.352222 -0.151883 -0.106395
    -0.397406 -0.473106 0.292602
    -0.731898 0.667105 0.441304
    -0.734766 0.854581 -0.0361733
    -0.4607 -0.277468 -0.916762

        有兴趣的同学可以通过ldd看看pcd_write依赖于哪些动态库,这也是蛮有意思的,

feixiaoxing@raspberrypi:~/Desktop/pcl $ ldd pcd_write
        linux-vdso.so.1 (0x0000007f8ea8f000)
        libpcl_io.so.1.13 => /lib/aarch64-linux-gnu/libpcl_io.so.1.13 (0x0000007f8e760000)
        libpcl_common.so.1.13 => /lib/aarch64-linux-gnu/libpcl_common.so.1.13 (0x0000007f8e690000)
        libstdc++.so.6 => /lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000007f8e470000)
        libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000007f8e430000)
        libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000007f8e280000)
        libboost_filesystem.so.1.74.0 => /lib/aarch64-linux-gnu/libboost_filesystem.so.1.74.0 (0x0000007f8e240000)
        libboost_iostreams.so.1.74.0 => /lib/aarch64-linux-gnu/libboost_iostreams.so.1.74.0 (0x0000007f8e200000)
        libpcl_io_ply.so.1.13 => /lib/aarch64-linux-gnu/libpcl_io_ply.so.1.13 (0x0000007f8e190000)
        libvtkIOGeometry-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkIOGeometry-9.1.so.1 (0x0000007f8e010000)
        libvtkIOPLY-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkIOPLY-9.1.so.1 (0x0000007f8dfd0000)
        libpng16.so.16 => /lib/aarch64-linux-gnu/libpng16.so.16 (0x0000007f8df70000)
        libusb-1.0.so.0 => /lib/aarch64-linux-gnu/libusb-1.0.so.0 (0x0000007f8df40000)
        libOpenNI2.so.0 => /lib/aarch64-linux-gnu/libOpenNI2.so.0 (0x0000007f8dec0000)
        libOpenNI.so.0 => /lib/libOpenNI.so.0 (0x0000007f8de20000)
        libpcap.so.0.8 => /lib/aarch64-linux-gnu/libpcap.so.0.8 (0x0000007f8ddb0000)
        libgomp.so.1 => /lib/aarch64-linux-gnu/libgomp.so.1 (0x0000007f8dd40000)
        libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000007f8dca0000)
        libvtkIOImage-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkIOImage-9.1.so.1 (0x0000007f8db30000)
        libvtkIOLegacy-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkIOLegacy-9.1.so.1 (0x0000007f8da80000)
        libvtkImagingCore-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkImagingCore-9.1.so.1 (0x0000007f8d8c0000)
        libvtkIOCore-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkIOCore-9.1.so.1 (0x0000007f8d840000)
        libvtkCommonExecutionModel-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkCommonExecutionModel-9.1.so.1 (0x0000007f8d700000)
        libvtkCommonDataModel-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkCommonDataModel-9.1.so.1 (0x0000007f8d290000)
        libvtkCommonCore-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkCommonCore-9.1.so.1 (0x0000007f8c940000)
        /lib/ld-linux-aarch64.so.1 (0x0000007f8ea52000)
        libz.so.1 => /lib/aarch64-linux-gnu/libz.so.1 (0x0000007f8c900000)
        libbz2.so.1.0 => /lib/aarch64-linux-gnu/libbz2.so.1.0 (0x0000007f8c8d0000)
        liblzma.so.5 => /lib/aarch64-linux-gnu/liblzma.so.5 (0x0000007f8c880000)
        libzstd.so.1 => /lib/aarch64-linux-gnu/libzstd.so.1 (0x0000007f8c7c0000)
        libvtkFiltersHybrid-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkFiltersHybrid-9.1.so.1 (0x0000007f8c6e0000)
        libvtkRenderingCore-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkRenderingCore-9.1.so.1 (0x0000007f8c4e0000)
        libjsoncpp.so.25 => /lib/aarch64-linux-gnu/libjsoncpp.so.25 (0x0000007f8c490000)
        libvtkFiltersGeneral-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkFiltersGeneral-9.1.so.1 (0x0000007f8c090000)
        libvtkFiltersCore-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkFiltersCore-9.1.so.1 (0x0000007f8b990000)
        libvtkCommonSystem-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkCommonSystem-9.1.so.1 (0x0000007f8b930000)
        libvtkCommonTransforms-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkCommonTransforms-9.1.so.1 (0x0000007f8b8d0000)
        libvtkCommonMath-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkCommonMath-9.1.so.1 (0x0000007f8b890000)
        libvtksys-9.1.so.1 => /lib/aarch64-linux-gnu/libvtksys-9.1.so.1 (0x0000007f8b820000)
        libvtkCommonMisc-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkCommonMisc-9.1.so.1 (0x0000007f8b440000)
        libudev.so.1 => /lib/aarch64-linux-gnu/libudev.so.1 (0x0000007f8b3f0000)
        libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000007f8b3c0000)
        libjpeg.so.62 => /lib/aarch64-linux-gnu/libjpeg.so.62 (0x0000007f8b340000)
        libtinyxml.so.2.6.2 => /lib/aarch64-linux-gnu/libtinyxml.so.2.6.2 (0x0000007f8b300000)
        libdbus-1.so.3 => /lib/aarch64-linux-gnu/libdbus-1.so.3 (0x0000007f8b280000)
        libvtkDICOMParser-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkDICOMParser-9.1.so.1 (0x0000007f8b240000)
        libvtkmetaio-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkmetaio-9.1.so.1 (0x0000007f8b190000)
        libvtkpugixml-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkpugixml-9.1.so.1 (0x0000007f8b130000)
        libtiff.so.6 => /lib/aarch64-linux-gnu/libtiff.so.6 (0x0000007f8b090000)
        libtbb.so.12 => /lib/aarch64-linux-gnu/libtbb.so.12 (0x0000007f8b030000)
        libdouble-conversion.so.3 => /lib/aarch64-linux-gnu/libdouble-conversion.so.3 (0x0000007f8aff0000)
        liblz4.so.1 => /lib/aarch64-linux-gnu/liblz4.so.1 (0x0000007f8afa0000)
        libvtkloguru-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkloguru-9.1.so.1 (0x0000007f8af50000)
        libvtkImagingSources-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkImagingSources-9.1.so.1 (0x0000007f8af00000)
        libvtkFiltersGeometry-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkFiltersGeometry-9.1.so.1 (0x0000007f8ae20000)
        libvtkCommonColor-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkCommonColor-9.1.so.1 (0x0000007f8ade0000)
        libvtkFiltersSources-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkFiltersSources-9.1.so.1 (0x0000007f8ad20000)
        libvtkCommonComputationalGeometry-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkCommonComputationalGeometry-9.1.so.1 (0x0000007f8acd0000)
        libvtkfmt-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkfmt-9.1.so.1 (0x0000007f8ac90000)
        libvtkkissfft-9.1.so.1 => /lib/aarch64-linux-gnu/libvtkkissfft-9.1.so.1 (0x0000007f8ac60000)
        libsystemd.so.0 => /lib/aarch64-linux-gnu/libsystemd.so.0 (0x0000007f8ab70000)
        libwebp.so.7 => /lib/aarch64-linux-gnu/libwebp.so.7 (0x0000007f8aaf0000)
        libLerc.so.4 => /lib/aarch64-linux-gnu/libLerc.so.4 (0x0000007f8aa40000)
        libjbig.so.0 => /lib/aarch64-linux-gnu/libjbig.so.0 (0x0000007f8aa10000)
        libdeflate.so.0 => /lib/aarch64-linux-gnu/libdeflate.so.0 (0x0000007f8a9d0000)
        libcap.so.2 => /lib/aarch64-linux-gnu/libcap.so.2 (0x0000007f8a9a0000)
        libgcrypt.so.20 => /lib/aarch64-linux-gnu/libgcrypt.so.20 (0x0000007f8a890000)
        libgpg-error.so.0 => /lib/aarch64-linux-gnu/libgpg-error.so.0 (0x0000007f8a840000)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用matlab/C语言/verilog分别生成coe文件

之前已经写过一个如何使用matlab生成coe文件&#xff0c;matlab自行运算生成三角波、正弦波等数据&#xff0c;并保存为COE文件。可跳转下面的网址进行查阅。 使用matlab生成正弦波、三角波、方波的COE文件_三角波文件.coe-CSDN博客https://blog.csdn.net/yindq1220/article/d…

深度学习——常用激活函数解析与对比

1、 简介 在神经网络中&#xff0c;激活函数扮演着至关重要的角色。它们的主要目的是引入非线性因素&#xff0c;使得网络能够学习和表示更加复杂的函数映射。以下是激活函数应具备的特点&#xff0c;以及这些特点为何重要的详细解释&#xff1a; 引入非线性有助于优化网络&am…

STM32标准库外部中断和定时器知识点总结

目录 前言 一、EXIT外部中断 &#xff08;1&#xff09;对射式红外传感器计次 &#xff08;2&#xff09;旋转编码器计次 二、TIM定时器 1.定时器定时中断 2.定时器外部时钟 3.TIM输出比较 &#xff08;1&#xff09;PWM驱动呼吸灯 &#xff08;2&#xff09;PWM驱动舵…

如何搭建一个vue2组件库(king-ui-pro)

文章引用图片无法查看&#xff0c;直接查看原文 感兴趣的可以关注或订阅下这个系列&#xff0c;后续会陆续将相关的组件与公共方法进行分享 目前已经完成了的组件有 多行省略pro版&#xff0c;不是简单的多行省略效果 公共方法&#xff1a; 1、图片预览&#xff0c;知乎的图…

STL-vector的使用及其模拟实现

在C中&#xff0c;vector是标准模板库&#xff08;STL&#xff09;中的一种动态数组容器&#xff0c;它可以存储任意类型的元素&#xff0c;并且能够自动调整大小。vector提供了许多方便的成员函数&#xff0c;使得对数组的操作更加简单和高效。 vector的使用 vector的构造函数…

elementUi 日期选择器 组件禁止手输

添加:editable"false" <el-date-pickerv-model"formInline.EndTime"type"datetime"placeholder"选择结束时间"format"YYYY-MM-DD HH:mm:ss"value-format"YYYY-MM-DD HH:mm:ss":editable"false">&…

AI大模型量化格式介绍(GPTQ,GGML,GGUF,FP16/INT8/INT4)

在 HuggingFace 上下载模型时&#xff0c;经常会看到模型的名称会带有fp16、GPTQ&#xff0c;GGML等字样&#xff0c;对不熟悉模型量化的同学来说&#xff0c;这些字样可能会让人摸不着头脑&#xff0c;我开始也是一头雾水&#xff0c;后来通过查阅资料&#xff0c;总算有了一些…

通用变频器ACS800-04M-0320-3可议价

商业别名&#xff1a;ACS800-04M-0320-3 产品编号&#xff1a;68279429 ABB 型号名称&#xff1a;ACS800-04M-0320-3 目录说明&#xff1a;ACS800-04M-0320-3&#xff1b; ACS800-04M-0320-3 Pcont.max:250kW, Icont.max:521A 原产地&#xff1a;芬兰 (FI) 海关税则号&#xf…

# 从浅入深 学习 SpringCloud 微服务架构(二)模拟微服务环境(2)通过 RestTemplate 调用远程服务

从浅入深 学习 SpringCloud 微服务架构&#xff08;二&#xff09;模拟微服务环境&#xff08;2&#xff09;通过 RestTemplate 调用远程服务 段子手168 1、打开 idea 创建父工程 创建 artifactId 名为 spring_cloud_demo 的 maven 工程。 --> idea --> File -->…

client-go源码结构及客户端对象

一、基础知识介绍 1、GVR 和 GVK G Goup资源组&#xff0c;包含一组资源操作的集合VVersion资源版本&#xff0c;用于区分不同API的稳定程度及兼容性RResource资源信息&#xff0c;用于区分不同的资源APIKKind资源对象类型&#xff0c;每个资源对象都需要Kind来区分它自身代表…

老化测试电源作用及选购标准

老化测试电源作用及选购标准 为了保证电子产品的稳定性和可靠性&#xff0c;我们需要对产品进行老化测试。老化测试电源是一种专门用于测试电子元器件、电源模块等产品在长时间、持续负载工作状态下稳定性和可靠性的电源设备&#xff0c;也被称为“测试电源”、“老化电源”等。…

【Linux】进程的程序地址空间①

目录 前言&#xff1a; 1.什么是地址空间 区域划分 页表&#xff1a; 2.为什么要有地址空间 2.1 进程与内存解耦合 2.2安全 3.凭什么说进程具有独立性&#xff1a; 4.用地址空间解释一下申请内存 前言&#xff1a; 在C语言中&#xff0c;我们说我们将内存分为&#xff0c;栈区…

【目标跟踪】ByteTrack详解与代码细节

文章目录 一、前言二、代码详解2.1、新起航迹2.2、预测2.3、匹配2.4、结果发布2.5、总结 三、流程图四、部署 一、前言 论文地址&#xff1a;https://arxiv.org/pdf/2110.06864.pdf git地址&#xff1a;https://github.com/ifzhang/ByteTrack ByteTrack 在是在 2021 年 10 月…

同元软控专业模型库系列——热流篇

一、引言 传热与流动是自然界与科学技术领域最普遍的物理现象。聚焦工业领域&#xff0c;传热、流体流动和燃烧问题是热工、核能、动力机械等行业所需研究解决的主要问题。复杂热流系统往往具有高复杂性、高成本性和高可靠性的特点&#xff0c;传统研制模式已逐渐无法满足现有…

【UE5.1 C++】提升编译速度

步骤 1. 在“C:\Users\用户\AppData\Roaming\Unreal Engine\UnrealBuildTool”目录下找到“BuildConfiguration.xml”文件 打开“BuildConfiguration.xml”&#xff0c;添加如下部分内容 <?xml version"1.0" encoding"utf-8" ?> <Configuratio…

干货:40个数据统计和分析的术语,让你的可视化大屏有理有据

1. 总体&#xff08;Population&#xff09;&#xff1a;指研究对象的全体&#xff0c;即研究问题所涉及的所有个体或事物的集合。 2. 样本&#xff08;Sample&#xff09;&#xff1a;从总体中选取的一部分个体或事物&#xff0c;用于代表总体进行研究。 3. 参数&#xff08…

MySQl-8.3.0版本安装下载教程(超详细保姆级教程)

第一步&#xff0c;去百度找到MySQl官网 第二步,找到DOWNLOAD&#xff08;下载&#xff09; 第三步 第四步 第五步 第六步.选择倒数第2个 第七步 第八步然后根据步骤安装就好了

我最重要的三个女人都生病了,两个已经住院了

往年的金三银四&#xff0c;大部分时间我都在面试&#xff0c;今年的金三银四&#xff0c;却一直往医院跑了。 我最重要的三个女人全生病了&#xff0c;病毒感染&#xff0c;20号我妈办理了住院&#xff0c;21 号我闺女小白牙办理了住院&#xff0c;她俩还不是同一家医院媳妇儿…

2024Xtu程设第一次练习题解

程设练习题谢大会专门查重 1.1531奇怪的数字 题目让我们从小到大输出1e6以内所有的答案&#xff0c;其实也没什么好的思路 就是将一个数n的所有位都拆出来&#xff0c;遍历这些位&#xff08;每次取一个x&#xff09;&#xff0c;然后通过作除法&#xff08;y n / x&#xf…

研究助理(博士后),院所两级共同资助经费80万

一、声学所介绍 1964年&#xff0c;为落实国家声学规划&#xff0c;满足国家迫切需要&#xff0c;形成全国声学学科研究中心&#xff0c;经国务院副总理聂荣臻元帅批准&#xff0c;成立中国科学院声学研究所。 声学所是从事声学和信息处理技术研究的综合性研究所&#xff0c;…