一:使用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. [系统资源攻略]IO第一篇-磁盘IO,内核IO概念

    几个基本的概念 在研究磁盘性能之前我们必须先了解磁盘的结构,以及工作原理.不过在这里就不再重复说明了,关系硬盘结构和工作原理的信息可以参考维基百科上面的相关词条--Hard disk drive(英文 ...

  2. codeforces 427D Match & Catch(后缀数组,字符串)

    题目 参考:http://blog.csdn.net/xiefubao/article/details/24934617 题意:给两个字符串,求一个最短的子串.使得这个子串在两个字符串中出现的次数都等 ...

  3. Oralce导入数据库出现某一列的值太大

    这是由于导出的文件所运行的Oracle,和导入所运行的Oracle机器字符集不相同导致的,在UTF-8中有的汉字占三个字节, 并不是所有的都占两个字节,

  4. 《团队名称》第八次团队作业:Alpha冲刺

    项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 代码敲不队 作业学习目标 (1)掌握软件测试基础技术(2)学习迭代式增量软件开发过程(Scrum) ...

  5. Nginx学习总结(1)——Nginx入门简介

    本文主要介绍一些Nginx的最基本功能以及简单配置,但不包括Nginx的安装部署以及实现原理.废话不多,直接开始. 1.静态HTTP服务器 首先,Nginx是一个HTTP服务器,可以将服务器上的静态文 ...

  6. Spring Cloud-Eureka实现服务的注册与发现(二)

    在Spring Cloud中是使用Eureka来实现服务的注册与发现的 请勿使用eureka2.x  用于生产 2.x已经停止开发了  使用1.x  最新版是1.9  我这里demo是使用1.9  详 ...

  7. Navicat Premium (patch and keygen)

    标签:Navicat 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/13 ...

  8. SGU - 296 - Sasha vs. Kate

    上题目: 296. Sasha vs. Kate Time limit per test: 1 second(s)Memory limit: 65536 kilobytes input: standa ...

  9. Method and apparatus for an atomic operation in a parallel computing environment

    A method and apparatus for a atomic operation is described. A method comprises receiving a first pro ...

  10. 0708关于理解mysql SQL执行顺序

    转自 http://www.jellythink.com/archives/924,博客比价清晰 我理解上文的是SQL执行顺序 总体方案.当你加入索引了以后,其实他的执行计划是有细微的变化,比方说刚开 ...