vs2019 基于pcl和opencv的体积检测算法 zed版本+安卓端新手版(一)

2023-10-10 04:10

本文主要是介绍vs2019 基于pcl和opencv的体积检测算法 zed版本+安卓端新手版(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

vs2019 基于pcl和opencv的体积检测算法 zed版本+安卓端新手版(一)

  • 写在前面的话
  • 配置
  • 环境配置
  • 代码

写在前面的话

最近的一个小项目,图像方面的算法开发,题目是:深度相机体积测量算法,最终目标是用在安卓端做体积测量,给快递公司用。体积检测算法的源码是参考PointCloudVolumeMeasure的,使用俯拍的方式进行得到物体的长宽高进行估计的,所以如果是测没有长宽高的物体可能目前还做不到,看了很多的论文,因为要求比较快,所以直接拿了网上的代码作为参考。

如果有时间的话也可以用很多别的方法:比方 Potato volume measurement based on RGB-D camera,这是一种从两面投影的体积积分算法,要两台深度相机和比较大的场所,精度比这个高;
还有 Volume measurement with a consumer depth camera based on structured infrared lightFood Volume Estimation for Quantifying Dietary Intake with a Wearable Camera 是用slam三维重构的方法,需要平台,算法比较复杂;
还有VOLUMNECT - Measuring Volumes with Kinect用Harris探测器计算多个相交平面计算长宽高的方法,可以在任意角度拍摄计算体积,不过精度就一般般。
在这里就不多说了,进入正题。

配置

系统:Win10
CPU:i7-8700
显卡:GTX1650(显存4G,好像最后也没用GPU算啥,还是写出来吧)
内存:16G

环境配置

PCL
第一次用c++,全蒙呀,只要硬着头皮上了,少啥装啥,用pcl算肯定要配置pcl(废话),参考网址VS2017配置PCL1.9(win10环境) (为啥不找vs2019,因为太新没教程。。。还有,19和17都使用v141平台工具集,凑活儿参考。。),pcl依赖的库在安装时候大多都安装好了,配置好环境变量就行。

OPENCV
pcl可以完成很多的图像处理功能,但是一般机器视觉很多关于图像预处理方面的功能还是要用opencv,所以配置一下吧,参考网址windows 下OpenCV的安装部署详细教程,release、debug版本不要弄错。

ZED
由于我使用zed相机做的pc端开发,所以要配置一下zed,参考网址zed双目相机的windows配置,zed摄像头用的时候一定要用到GPU,所以把CUDA装一下,我装的10.0,参考网址CUDA10安装,配合使用VS2017。

cmake-gui
安装它主要是因为zed本身带有对pcl的接口,可以直接用cmake-gui创建对应的c++工程(配置好的环境),cmake-gui的cmakelist路径在(ZED/ZED SDK/samples/interfaces/pcl),Configure(1)然后Generate(2)一下,可能会遇到一些错,大部分都是路径没配置好导致的可以打开Grouped(3)、Advanced(4)查看一下,在列表里把路径写错的改好,少啥再装装。(我这个是最近配置tf的,路径没有参考价值哈)
在这里插入图片描述

代码

体积检测算法的源码是参考PointCloudVolumeMeasure,但是这个代码是使用kinect双目摄像头检测的,输入不一样,源码是用pcl中XYZ的深度点进行计算的,但是ZED大多数的例子都是用Point-XYZ-RGB的输入格式,所以多数的输入参考代码都用不上,最后查到了一个github(万能的github)的例子是ZED输入转化为Point-XYZ的输入格式。参考网址:euclidean-clustering-pcl-zed(谢谢git爸爸救我),由于有这个项目目前可能还要用,我这边的源码不能贴出来抱歉,最后把opencv配置好,应该就能跑了。pcl显示出来的窗口可能是大块的红绿,不用担心,用鼠标滚轮滚一下就可以了。

下面,上图:测的还是挺准的

(忽略我就是这么拿着摄像头测的。。。)

手持拍照设备
结果

换个角度看看
第一次写博客,还是想养成一个习惯,把自己做的东西慢慢的都记下来,不是为了炫耀或者吹嘘,是真的希望能给和我一样遇到困难的人一些帮助,写的不好的地方多多海涵,这个项目ZED开发完大概花了我两周的时间,精度在做均值平滑以后5%以内,算蒙混过关,后面等有时间慢慢把往安卓端移植的工作写上来。

附上一些编程调试过程中有帮助或者不错的参考网址:
pcl常用小知识和几何计算
3维Harris角点提取pcl实现
PCL几种采样方法
PCL+OpenCV+WebCam实现模拟深度图像实时点云数据采集
PCL学习笔记
PCL中访问点云数据点的几种方式
PCL代码经典赏析七:PCL 点云特征描述与提取
PCL系列之——点云读取与显示
有任何不明白的问题的可以在下面问我,有空的话会第一时间解答哒~

这篇关于vs2019 基于pcl和opencv的体积检测算法 zed版本+安卓端新手版(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/177837

相关文章

Ubuntu如何升级Python版本

《Ubuntu如何升级Python版本》Ubuntu22.04Docker中,安装Python3.11后,使用update-alternatives设置为默认版本,最后用python3-V验证... 目China编程录问题描述前提环境解决方法总结问题描述Ubuntu22.04系统自带python3.10,想升级

使用Python实现一个简易计算器的新手指南

《使用Python实现一个简易计算器的新手指南》计算器是编程入门的经典项目,它涵盖了变量、输入输出、条件判断等核心编程概念,通过这个小项目,可以快速掌握Python的基础语法,并为后续更复杂的项目打下... 目录准备工作基础概念解析分步实现计算器第一步:获取用户输入第二步:实现基本运算第三步:显示计算结果进

Python脚本轻松实现检测麦克风功能

《Python脚本轻松实现检测麦克风功能》在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的,本文将介绍一个简单的Python脚本,能够帮助我们检测本地麦克风的功能,需要的... 目录轻松检测麦克风功能脚本介绍一、python环境准备二、代码解析三、使用方法四、知识扩展轻松检测麦

基于Python实现温度单位转换器(新手版)

《基于Python实现温度单位转换器(新手版)》这篇文章主要为大家详细介绍了如何基于Python实现温度单位转换器,主要是将摄氏温度(C)和华氏温度(F)相互转换,下面小编就来和大家简单介绍一下吧... 目录为什么选择温度转换器作为第一个项目项目概述所需基础知识实现步骤详解1. 温度转换公式2. 用户输入处

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

Linux升级或者切换python版本实现方式

《Linux升级或者切换python版本实现方式》本文介绍在Ubuntu/Debian系统升级Python至3.11或更高版本的方法,通过查看版本列表并选择新版本进行全局修改,需注意自动与手动模式的选... 目录升级系统python版本 (适用于全局修改)对于Ubuntu/Debian系统安装后,验证Pyt

MySQL 升级到8.4版本的完整流程及操作方法

《MySQL升级到8.4版本的完整流程及操作方法》本文详细说明了MySQL升级至8.4的完整流程,涵盖升级前准备(备份、兼容性检查)、支持路径(原地、逻辑导出、复制)、关键变更(空间索引、保留关键字... 目录一、升级前准备 (3.1 Before You Begin)二、升级路径 (3.2 Upgrade

Nginx进行平滑升级的实战指南(不中断服务版本更新)

《Nginx进行平滑升级的实战指南(不中断服务版本更新)》Nginx的平滑升级(也称为热升级)是一种在不停止服务的情况下更新Nginx版本或添加模块的方法,这种升级方式确保了服务的高可用性,避免了因升... 目录一.下载并编译新版Nginx1.下载解压2.编译二.替换可执行文件,并平滑升级1.替换可执行文件

在macOS上安装jenv管理JDK版本的详细步骤

《在macOS上安装jenv管理JDK版本的详细步骤》jEnv是一个命令行工具,正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友,:本文主要介绍在macOS上安装... 目录前言安装 jenv添加 JDK 版本到 jenv切换 JDK 版本总结前言China编程在开发 Java

OpenCV在Java中的完整集成指南分享

《OpenCV在Java中的完整集成指南分享》本文详解了在Java中集成OpenCV的方法,涵盖jar包导入、dll配置、JNI路径设置及跨平台兼容性处理,提供了图像处理、特征检测、实时视频分析等应用... 目录1. OpenCV简介与应用领域1.1 OpenCV的诞生与发展1.2 OpenCV的应用领域2