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

相关文章

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

C++ 检测文件大小和文件传输的方法示例详解

《C++检测文件大小和文件传输的方法示例详解》文章介绍了在C/C++中获取文件大小的三种方法,推荐使用stat()函数,并详细说明了如何设计一次性发送压缩包的结构体及传输流程,包含CRC校验和自动解... 目录检测文件的大小✅ 方法一:使用 stat() 函数(推荐)✅ 用法示例:✅ 方法二:使用 fsee

Python如何将OpenCV摄像头视频流通过浏览器播放

《Python如何将OpenCV摄像头视频流通过浏览器播放》:本文主要介绍Python如何将OpenCV摄像头视频流通过浏览器播放的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完... 目录方法1:使用Flask + MJPEG流实现代码使用方法优点缺点方法2:使用WebSocket传输视

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

Redis指南及6.2.x版本安装过程

《Redis指南及6.2.x版本安装过程》Redis是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSIC语言编写、支持网络、... 目录概述Redis特点Redis应用场景缓存缓存分布式会话分布式锁社交网络最新列表Redis各版本介绍旧