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

相关文章

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

IDEA中Git版本回退的两种实现方案

《IDEA中Git版本回退的两种实现方案》作为开发者,代码版本回退是日常高频操作,IntelliJIDEA集成了强大的Git工具链,但面对reset和revert两种核心回退方案,许多开发者仍存在选择... 目录一、版本回退前置知识二、Reset方案:整体改写历史1、IDEA图形化操作(推荐)1.1、查看提

JDK多版本共存并自由切换的操作指南(本文为JDK8和JDK17)

《JDK多版本共存并自由切换的操作指南(本文为JDK8和JDK17)》本文介绍了如何在Windows系统上配置多版本JDK(以JDK8和JDK17为例),并通过图文结合的方式给大家讲解了详细步骤,具有... 目录第一步 下载安装JDK第二步 配置环境变量第三步 切换JDK版本并验证可能遇到的问题前提:公司常

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no