点云技术相关产学研社区

 找回密码
 立即注册加入PCL中国点云技术相关产学研社区

扫一扫,访问微社区

查看: 3318|回复: 4

关于有色点云获取的问题 openni2 设备Kinect

[复制链接]
发表于 2016-3-31 15:45:34 | 显示全部楼层 |阅读模式
为什么在点云类型为PointXYZ时程序可以正常运行,在点云类型为PointXYZRGB时程序viewer窗口就没有输出点云了呢?
代码如下:
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>
#include <pcl/io/openni2_grabber.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/common/time.h>
#include <boost/thread/thread.hpp>
#ifdef _WIN32
# define sleep(x) Sleep((x)*1000)
#endif

class SimpleOpenNIViewer
{
public:
        SimpleOpenNIViewer() : viewer("PCL OpenNI Viewer") {}

        void cloud_cb_(const pcl::PointCloud<pcl::PointXYZ>::ConstPtr &cloud)
        {
                static unsigned count = 0;
                static double last = pcl::getTime();
                if (++count == 30)
                {
                        double now = pcl::getTime();
                        std::cout << "distance of center pixel :" << cloud->points[(cloud->width >> 1) * (cloud->height + 1)].z << " mm. Average framerate: " << double(count) / double(now - last) << " Hz" << std::endl;
                        count = 0;
                        last = now;
                }
                if (!viewer.wasStopped())
                        viewer.showCloud(cloud);
        }

        void run()
        {
                pcl::Grabber* interface = new pcl::io::OpenNI2Grabber();

                boost::function<void(const pcl::PointCloud<pcl::PointXYZ>::ConstPtr&)> f =
                boost::bind(&SimpleOpenNIViewer::cloud_cb_, this, _1);
                boost::signals2::connection c=interface->registerCallback(f);

                interface->start();

                while (true)
                        sleep(1);
                interface->stop();
        }

        pcl::visualization::CloudViewer viewer;
};

int main()
{
        SimpleOpenNIViewer v;
        v.run();
        return 0;
}
麻烦大神们 解释一下




回复

使用道具 举报

发表于 2016-5-17 09:09:33 | 显示全部楼层
你的类型是PointXYZRGB的时候你的pcd文件是什么样的,能截个图吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-30 14:48:12 | 显示全部楼层
xuanzijiejie 发表于 2016-5-17 09:09
你的类型是PointXYZRGB的时候你的pcd文件是什么样的,能截个图吗?

并没有pcd文件,当点云格式改成XYZRGB的时候,窗口内是什么都没有的,即便是在回调函数里面写上存出pcd文件也是没效果的,在if(++count==30)的里面写上输出error也是不会输出的,不知道是什么问题
回复 支持 反对

使用道具 举报

发表于 2016-7-11 13:55:22 | 显示全部楼层
周锴 发表于 2016-6-30 14:48
并没有pcd文件,当点云格式改成XYZRGB的时候,窗口内是什么都没有的,即便是在回调函数里面写上存出pcd文 ...

可能是PCD文件不包含RGB信息值
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-9 17:16:22 | 显示全部楼层
BeFiend 发表于 2016-7-11 13:55
可能是PCD文件不包含RGB信息值

。这个跟pcd没关系吧,估计没办法实时。有时候等一段时间就会出现
回复 支持 反对

使用道具 举报

本版积分规则

QQ|小黑屋|点云技术相关产学研社区 ( 陕ICP备13001629号 )

GMT+8, 2024-4-29 05:42 , Processed in 1.694057 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表