一:使用GPU进行点云分割,理论上可以极大地加快分割速度;

于是对PCL1.7.1进行了编译,回到32位系统,重设QT,编译成功(时间好漫长,一定要配置仔细,否则编译一次又一次浪费更多时间);

使用时:

#include < pcl/gpu/segmentation/gpu_extract_cluster.h>或者

#include < pcl/gpu/segmentation/gpu_extract_cluster.h>

函数里面添加代码:

// Get params from function in

const boost::shared_ptr<pcl::PointCloud<pcl::PointXYZ> >  host_cloud_ =CloudSrc;

float                                                       tolerance =m_DistanceThre;

unsigned int                                      min_pts_per_cluster =MaxCloudNum;

unsigned int                                      max_pts_per_cluster =MinCloudNum;

std::vector<pcl::PointIndices>                                     cluster_indices;

//define the extractor

pcl::gpu::EuclideanClusterExtraction ec;

pcl::gpu::DeviceArray<pcl::PointXYZ>   DevicePointArray(CloudSrc->size());   // allocation the new GPU memory!

pcl::gpu::EuclideanClusterExtraction::GPUTreePtr treeGPU(new pcl::gpu::EuclideanClusterExtraction::GPUTree);

treeGPU->setCloud(DevicePointArray);

//Set paramS!

ec.setSearchMethod (treeGPU);

ec.setClusterTolerance (tolerance);

ec.setMinClusterSize (MinCloudNum);//ec.setMinClusterSize (100)

ec.setMaxClusterSize (MaxCloudNum);//ec.setMaxClusterSize (25000)

ec.setHostCloud (CloudSrc);

//ec.setInput (DevicePointArray);

ec.extract(cluster_indices);

由此转入函数调用  ,编译出现问题  工程出现重定义,反复修改几次

设置 extract 函数里面调用的函数为全局函数,消除了两个重定义;不过extract本身不能消除,也无法设置为静态成员函数;

二:没有办法,注释掉gpu_extract_cluster.cpp里面的HPP包含,

重新加入库,编译库,最后还是没有成功,出现同样问题。发现时源代码的问题

三:把gpu_extract_cluster.hpp 和gpu_extract_cluster.h从源代码里面抽离出来,

gpu_extract_cluster.hpp 修改为gpu_extract_cluster.cpp

把gpu_extract_cluster.cpp 和gpu_extract_cluster.h添加到项目里面

程序编译成功。

四:编译成功可以运行,

待程序运行到gpu_extract_cluster.cpp 的extract函数里面,

if( !tree_->isBuilt() )

{

tree_->build();//

}

建立八叉树的时候,显卡驱动出现崩溃!瞬间我快要心碎的哭了,这可如何是好啊!

错误提示:

AviTest.exe 中的 0x74a71ee9 处有未经处理的异常: Microsoft C++ 异常: 内存位置 0x035ded58 处的 thrust::system::system_error。

这可到头了,trust虽然可以像C++库一样被使用,我可,没有时间再去调试这个东西了,一股蛋蛋的淡疼的感觉。

最终定位到 afxmem.cpp,定位到323下一句要执行的语句:

320#if !defined(_AFX_NO_DEBUG_CRT) && defined(_DEBUG)

321pResult = _malloc_dbg(nSize, _NORMAL_BLOCK, NULL, 0);

322#else

323pResult = malloc(nSize);

324#endif

(tree_->build()行提示 treesize =4915200 702000个pointxyz ,

而 pResult = malloc(nSize);提示为nSize=4294967295,坑死人的大空间,怎么分配啊!)

这难道是显卡驱动有问题?还是CUDA有问题,我只能孤独地在黑夜里提心吊胆地摸索着前行,一步一磕绊,痛苦不堪.....

路慢慢其修远兮,不想探索了!!!先放下,哪天想起来或者发现自己的错误在哪里了,再回头解决.

使用PCL::GPU::遇到问题的更多相关文章

  1. 2019/02/09 对于KinectFusion 的理解

    网上有很多关于Kinect Fusion 的详细介绍,包括各个部分的算法,思路,以及应用上的限制和优化. 在此就不多介绍了. KinectFusion 提供了非常基础的用RGB-D 相机实现的 Den ...

  2. Windows7系统下OpenCV2.4.4+PCL1.6.0+SSBA3.0+VS2010 IDE32环境下编译和安装以实现Sfm和PCL点云数据可视化

    最近在学习<深入理解OpenCV:实用计算机视觉项目解析>一书的第三章和第四章时,遇到很多编译问题,书中又没有详细的讲解环境配置和搭建过程.经过多天的捉摸.调试.排错终于将两章的程序都调试 ...

  3. PCL库简要说明

    PCL(PointCloudLibrary)是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C++编程库,它实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取.滤波.分割.配准.检索. ...

  4. 点云库PCL学习

    1. 点云的提取 点云的获取:RGBD获取 点云的获取:图像匹配获取(通过摄影测量提取点云数据) 点云的获取:三维激光扫描仪 2. PCL简介 PCL是Point Cloud Library的简称,是 ...

  5. PCL中outofcore模块---基于核外八叉树的大规模点云的显示

    写在前面   最近公众号的活动让更多的人加入交流群,尝试提问更多的我问题,群主也在积极的招募更多的小伙伴与我一起分享,能够相互促进.   这里总结群友经常问,经常提的两个问题,并给出我的回答: (1) ...

  6. PCL点云库(Point Cloud Library)简介

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=29 什么是PCL PCL(Point Cloud Library)是在吸收了 ...

  7. Xamarin+Prism开发详解一:PCL跨平台类库与Profile的关系

    在[Xamarin+Prism小试牛刀:定制跨平台Outlook邮箱应用]中提到过以下错误,不知道大伙还记得不: 无法安装程序包"Microsoft.Identity.Client 1.0. ...

  8. 高级渲染技巧和代码示例 GPU Pro 7

    下载代码示例 移动设备正呈现着像素越来越高,屏幕尺寸越来越小的发展趋势. 由于像素着色的能耗非常大,因此 DPI 的增加以及移动设备固有的功耗受限环境为降低像素着色成本带来了巨大的压力. MSAA 有 ...

  9. 【腾讯优测干货分享】安卓专项测试之GPU测试探索

    本文来自于Dev Club 开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57c7ffdc0569a1191bce8a63 作者:章未哲——腾讯SNG质 ...

随机推荐

  1. STM32F103 rtthread工程构建

    目录 STM32F103 工程构建 1.基本情况 2.硬件连接 3.rtthread配置 4.点灯 5. 码云上git操作 STM32F103 工程构建 1.基本情况 RAM 20K ROM 64K ...

  2. S-HR远程调试

  3. 回文词(Palindromes, UVa401)

    输入一个字符串,判断它是否为回文串以及镜像串.输入字符串保证不含数字0. 所谓 回文串,就是反转以后和原串相同,如abba和madam. 所谓镜像串,就是左右镜像之后和原串相同,如2S和3AIAE. ...

  4. linux下关闭键盘的重复击键

    https://askubuntu.com/questions/576421/disable-keyboard-repeat-from-command-line You can use the xse ...

  5. 05.Python高级编程

    1 ==,is的使用 is 是比较两个引用是否指向了同一个对象(地址引用比较). == 是比较两个对象是否相等.(比较的数值) 2 深拷贝.浅拷贝.copy.copy 2.1 浅拷贝 浅拷贝: 拷贝的 ...

  6. java获取文件的父目录

    File file = new File("a.txt"); String parentPath = file.getParent(); // null File parentDi ...

  7. Spring 单例模式和多例模式

    1.Spring中的对象默认都是 单例模式. 2.使用 @Scope("prototype") 注解来使对象成为多例模式. 3.通过@Autowired 注入的Service 或者 ...

  8. 优化系列 | DELETE子查询改写优化

    0.导读 有个采用子查询的DELETE执行得非常慢,改写成SELECT后执行却很快,最后把这个子查询DELETE改写成JOIN优化过程 1.问题描述 朋友遇到一个怪事,一个用子查询的DELETE,执行 ...

  9. SQL优化(SQL TUNING)之10分钟完毕亿级数据量性能优化(SQL调优)

    前几天.一个用户研发QQ找我,例如以下: 自由的海豚. 16:12:01 岛主,我的一条SQL查不出来结果,能帮我看看不? 兰花岛主 16:12:10 多久不出结果? 自由的海豚 16:12:17 多 ...

  10. 【SpringMVC架构】SpringMVC入门实例,解析工作原理(二)

    上篇博文,我们简单的介绍了什么是SpringMVC.这篇博文.我们搭建一个简单SpringMVC的环境,使用非注解形式实现一个HelloWorld实例,从简单入手,逐步深入. 环境准备 我们须要有主要 ...