上位机图像处理和嵌入式模块部署(树莓派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>intmain (){pcl::PointCloud<pcl::PointXYZ> cloud;// Fill in the cloud datacloud.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_writelinux-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)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高效可扩展,使用Dask进行大数据分析

大家好&#xff0c;Dask技术作为并行计算领域的创新力量&#xff0c;正在重塑大数据的处理模式。这项开源项目为Python语言带来了强大的并行计算能力&#xff0c;突破了传统数据处理在扩展性和性能上的瓶颈。 本文将介绍Dask的发展历程、架构设计&#xff0c;并分析其在大数据…

Nacos服务注册中心

1.引入依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>2.application.properties中配置 # 应用名称 spring.application.namenacos-aserver…

接收区块链的CCF会议--SecureComm 2024 截止5.10 附录用率

会议名称&#xff1a;SecureComm CCF等级&#xff1a;CCF C类会议 类别&#xff1a;网络与信息安全 录用率&#xff1a;2022年录用率33%&#xff08;43/130) Topics Security and privacy in computer networks (e.g., wired, wireless, mobile, hybrid, sensor, vehicular,…

UI5:面向企业级应用的JavaScript框架

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

ng反向代理 conf配置

log_format szxw_timed_combined $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" $request_time $upstream_response_time;#外部转发 …

15.Nacos服务分级存储模型

服务跨集群调用问题&#xff1a; 服务调用尽可能的选择本地集群的服务&#xff0c;跨集群调用延迟较高。 本地集群不可访问的情况下&#xff0c;再去访问其他集群。 如何配置集群的实例属性&#xff1a; spring: cloud:nacos:server-addr: localhost:8848 #nacos服务端地址d…

findImg找图工具

findImg 安装 npm install findImg -g 启动 findImg run 介绍 找出当前目录下的所有图片&#xff08;包括svg的symbol格式&#xff09;在浏览器中显示出来 源码 https://github.com/HuXin957/find-img 场景 例如前端项目中的img目录&#xff0c;大家都在往里面放图片&#xff…

java接口自动化测试

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

那些早期的iax和SIP软电话软件界面,看看你见过几个?

目录 一些iax/sip软电话UI图片SIP软电话的界面怎么设计SIP软电话的功能有哪些 早期voip发展中&#xff0c;很多公司开发了自己的SIP软电话&#xff0c;有些已经不存在了&#xff0c;有些还在使用中&#xff0c;比如X-Lite&#xff0c;Zoiper等等&#xff0c;我们一起看看这些早…

lvgl图形化设计工具GUI Guider结合使用

前言 上篇博客整合了lvgl到项目中&#xff0c;采用的是自己编写源码的方式&#xff0c;实现了个简单的界面。实际过程中一般情况开发界面都借助设计工具&#xff0c;这里使用的是gui guider来进行示例记录 项目结构&#xff08;生成代码路径依然放到项目路径下&#xff09; C…

实验2 组合逻辑电路与时序逻辑电路设计

实验目的: 1.构建基于verilog语言的组合逻辑电路和时序逻辑电路; 2.掌握verilog语言的电路设计技巧。 3.完成如下功能:加法器、译码器、多路选择器、计数器、移位寄存器等。 实验内容及步骤: 一、实验原理 原理图文件《数字系统设计_sch.pdf》,找到如下两个部分: 图…

一文扫盲(5):实验室管理系统的界面设计

本次带来第5期&#xff1a;实验室管理系统的设计&#xff0c;从系统定义、功能模块、界面构成和设计着力点四个方面讲解&#xff0c;大千UI工场愿意持续和大家分享&#xff0c;欢迎关注、点赞、转发。 一、什么是实验室管理系统 实验室管理系统是一种用于管理和监控实验室运作…

nodejs版本过高导致vue-cli无法启动的解决方案

目录 前言异常现象解决方案总结 前言 之前使用软件管家升级了Nodejs&#xff0c;今天在运行Vue项目的时候老是报错&#xff0c;查了很多资料&#xff0c;最后确定是Nodejs版本过高导致的。 异常现象 E:\project\ry\RuoYi-Cloud\ruoyi-ui>npm run dev> ruoyi3.6.4 dev …

13-LINUX--消息队列

一.消息队列 1.消息队列&#xff1a;消息队列为一个进程向另一个进程发送一个数据块提供了条件&#xff0c;每个数据块会包含一个类型。 2.相关函数 1>.msgget(key_t key,int msgflg) : 创建消息队列 2>. msgsnd&#xff1a;把消息添加到消息队列 3>.msgrcv &#xf…

CSS布局 Flex 和 Grid

在 CSS 中&#xff0c;理解 flex 和 Grid 布局非常重要&#xff0c;今天把这两个重要知识点回顾一下。 Flexbox 弹性盒子布局 弹性布局支持 flex、inline-flex&#xff0c;支持块和内联。 容器 轴的概念&#xff0c;在 Flexbox&#xff0c;有主轴和侧轴的概念&#xff0c;轴…

实验 3--表的基本操作与数据查询

文章目录 实验 3--表的基本操作与数据查询4.3.1 实验目的4.3.2 实验准备实验内容1.在 SSMS 中向数据库 YGKQ 中的表插入数据。2.使用 T-SQL 语句向 YGKQ 中的表插入数据。3.在 SSMS 中删除数据库 YGKQ 中的表数据。4.使用 T-SQL 语句删除数据库 YGKQ中的表数据。5.在 SSMS 中修…

OPAM模型(细粒度图像分类)

OPAM模型&#xff08;细粒度图像分类&#xff09; 摘要Abstract1. OPAM1.1 文献摘要1.2 细粒度图像分类1.3 研究背景1.4 OPAM模型创新点1.5 OPAM模型1.5.1 补丁过滤1.5.2 显着性提取1.5.3 细粒度区域级注意模型对象-空间约束方法&#xff08;Object spatial constraint&#xf…

WSL安装-问题解决

WslRegisterDistribution failed with error: 0x8004032d WslRegisterDistribution failed with error: 0x80080005 Error: 0x80080005 ??????? 解决&#xff1a; 1、 winr输入&#xff1a;optionalfeatures.exe 2、打开这两项

javaWeb项目-网吧网咖管理系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、JAVA简介 JavaSc…

Vitis HLS 学习笔记--优化指令-BIND_OP_STORAGE

目录 1. BIND_OP_STORAGE 概述 1.1 BIND_OP 1.2 BIND_STORAGE 2. 语法解析 2.1 BIND_OP 2.2 BIND_OP 用法示例 2.3 BIND_STORAGE 2.4 BIND_STORAGE 示例 3. 实例演示 4. 总结 1. BIND_OP_STORAGE 概述 BIND_OP_STORAGE 其实是两个优化指令的合称&#xff1a;BIND_OP…