一:使用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. 【剑指Offer】17、树的子结构

      题目描述:   输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构)   解题思路:   要查找树A中是否存在和树B结构一样的子树,我们可以分为两步:第一步, ...

  2. vfs:结构体对象

    VFS结构体 super_block 存储一个已安装的文件系统的控制信息,代表一个已安装的文件系统:每次一个实际的文件系统被安装时, 内核会从磁盘的特定位置读取一些控制信息来填充内存中的超级块对象.一 ...

  3. vfs:open.c 源码学习

    nameidata路径查找辅助结构 open.c @do_sys_open @get_unused_fd_flags @do_filp_open 1.开始填充nameidata 2.开始填充file ...

  4. Ubuntu安装RTX2080显卡驱动

    安装RTX2080显卡驱动 近日新购了一台DELL服务器,用于TensorFlow,由于显卡是另加的,需要安装显卡驱动. 服务器配置 服务器型号:DELL PowerEdge R730 CPU:2*I ...

  5. 51nod1289 大鱼吃小鱼

    有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右.游动的速度是一样的,两条鱼相遇大鱼会吃掉小鱼.从左到右给出每条鱼的大小和游动的方向(0表示向左,1表示向右).问足够长的时间之后 ...

  6. springboot框架嵌入netty

    1.pom.xml添加依赖 <dependency> <groupId>io.netty</groupId> <artifactId>netty-all ...

  7. nyoj 711 枚举+并查集

     #include<stdio.h>//从大到小不断枚举边直到找到s-t的路径,判断从s可以到t可以用并查集来判断 #include<stdlib.h>//枚举最大的一条边肯定 ...

  8. AIX下sort命令简介及使用

    AIX下sort命令简介及使用 sort -rn +3 , r倒排序,n按照数字排序:  +3按照第四列排序: 第一列是+0: 学习:http://blog.csdn.net/chen_linbo/a ...

  9. Google面试题-高楼扔鸡蛋问题

    本文由 @lonelyrains 出品.转载请注明出处.  文章链接: http://blog.csdn.net/lonelyrains/article/details/46428569 高楼扔鸡蛋问 ...

  10. sql server 2012中red gate的sql source control消失

    找到C:\ProgramData\Microsoft\SQL Server Management Studio\11.0\Addins路径,用notepad++打开RedGate.SIPFramewo ...