请选择 进入手机版 | 继续访问电脑版

点云技术相关产学研社区

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

扫一扫,访问微社区

查看: 23634|回复: 24

如何从KINECT中获取点云?

[复制链接]
发表于 2013-5-29 17:11:02 | 显示全部楼层 |阅读模式
本人新手,想问问看如何从KINECT中获取点云数据?譬如说,现在我有的一个例子是可以对两张 .PCD格式的图片中识别特定物体(一张图片中只含有被识别物体,另一张中包含被识别物体和其他背景),我希望实现从KINECT中实时识别物体的效果,请问应该怎么做呢?
            谢谢!


回复

使用道具 举报

发表于 2013-5-29 21:47:52 | 显示全部楼层
用OPENNI 获得深度图 然后 有一个函数转换成世界坐标系下的真实坐标 也就是点云数据  然后可以存成.PCD格式的文件 或者直接用例子进行处理。。 不知道有没有别的方法 这只是我的想法。。仅供参考
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-29 21:59:40 | 显示全部楼层
一大波蓝猫 发表于 2013-5-29 21:47
用OPENNI 获得深度图 然后 有一个函数转换成世界坐标系下的真实坐标 也就是点云数据  然后可以存成.PCD格式 ...

一大波蓝猫,你好,你方便告诉我一个相关的具体链接吗?譬如是什么函数进行转化,如何存成.PCD~谢了
回复 支持 反对

使用道具 举报

发表于 2013-5-29 22:42:13 | 显示全部楼层
应该蛮容易的,pcl编译安装好后,里面有个grabber相关的例子。应该就是你需要的了。后续识别的话,你自己在它对应的回调函数中加处理就行了。
回复 支持 反对

使用道具 举报

发表于 2013-5-30 09:12:14 | 显示全部楼层
Davidxiong 发表于 2013-5-29 21:59
一大波蓝猫,你好,你方便告诉我一个相关的具体链接吗?譬如是什么函数进行转化,如何存成.PCD~谢了 ...

ConvertProjectiveToRealWorld() 转成世界坐标  关于怎么存成PCD 文件  参考 《点云库PCL学习教程》 或者论坛里好像就能找到帖子
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-30 09:43:04 | 显示全部楼层
mypcl 发表于 2013-5-29 22:42
应该蛮容易的,pcl编译安装好后,里面有个grabber相关的例子。应该就是你需要的了。后续识别的话,你自己在 ...

mypcl 你好,我编译好了grabber这个函数之后,运行出现的结果是:
toshiba@ubuntu:~/catkin_ws3/src$ rosrun my_pcl_tutorial1 openni_grabber
distance of center pixel :nan mm. Average framerate: 31.0311 Hz
distance of center pixel :nan mm. Average framerate: 29.9121 Hz
distance of center pixel :nan mm. Average framerate: 29.9933 Hz
distance of center pixel :nan mm. Average framerate: 29.798 Hz
distance of center pixel :nan mm. Average framerate: 30.0375 Hz
distance of center pixel :nan mm. Average framerate: 30.1061 Hz

中心像素位置一直是nan,是哪里错了呢?另外,这个grabber 的例子只是显示中心像素坐标,如果我想实时显示点云图片呢?或者想保存PCD文件呢??你知道怎么弄吗》谢谢了
回复 支持 反对

使用道具 举报

发表于 2013-5-30 09:59:13 | 显示全部楼层
Davidxiong 发表于 2013-5-30 09:43
mypcl 你好,我编译好了grabber这个函数之后,运行出现的结果是:
toshiba@ubuntu:~/catkin_ws3/src$ ros ...

恩是会有nan值的,可能是材质或者环境等问题,有的地方不识别红外散斑,所以就没有数值,即成为nan值。你可以去掉nan值,滤波中有相关函数。
回复 支持 反对

使用道具 举报

发表于 2013-5-30 10:55:55 | 显示全部楼层
Davidxiong 发表于 2013-5-30 09:43
mypcl 你好,我编译好了grabber这个函数之后,运行出现的结果是:
toshiba@ubuntu:~/catkin_ws3/src$ ros ...

nan的数值处理方式和ls说的一样,过滤掉就行了,一般用kinect或者的都会有的。至于你说保存和显示的例子,在里面都有的。你多玩玩里面的和kinect相关的例子。成功了分享下经验。你是在linux下面用,可能有的默认编译配置和win下不一样,但这些例子应该都有的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-30 11:06:33 | 显示全部楼层
mypcl 发表于 2013-5-30 10:55
nan的数值处理方式和ls说的一样,过滤掉就行了,一般用kinect或者的都会有的。至于你说保存和显示的例子 ...

恩,谢谢。我去看下滤波的部分,不过,@mypcl,@苏菲娅,我想问问你们你们用PCL是在ROS下用吗?我是在ROS下用的,所以我觉得我需要的更像是这样一个程序:
#include <ros/ros.h>
#include <pcl_ros/point_cloud.h>
#include <pcl/point_types.h>
#include <pcl/io/pcd_io.h>
#include <boost/foreach.hpp>

pcl::PointCloud<pcl::PointXYZRGB> PC;   

void callback(const sensor_msgs::PointCloud2ConstPtr& msg)
{
     printf("Writing the file...\n");
     pcl::fromROSMsg(*msg, PC);
     int a = pcl::io::savePCDFileBinary"/home/rootx/pcl_proj/pcd/temp.pcd", PC);
     printf("Saved the pcd file...%d Return %d\n", PC.points.size(), a);

}

int main(int argc, char** argv)
{
     ros::init(argc, argv, "sub_pcl");
     ros::NodeHandle nh;
     ros::Subscriber sub = nh.subscrib<sensor_msgs::PointCloud2>("points2", 1, callback);
     ros::spin();
},你们是在ROS下用吗?还是直接用PCL??
回复 支持 反对

使用道具 举报

发表于 2013-6-4 10:57:58 | 显示全部楼层
Davidxiong 发表于 2013-5-30 11:06
恩,谢谢。我去看下滤波的部分,不过,@mypcl,@苏菲娅,我想问问你们你们用PCL是在ROS下用吗?我是在ROS ...

搞机器人相关的可能在ros下用的多吧,目前国内大多数人还是在台式机环境下用的较多。系统自然就主要是windows和ubuntu之类的。
你在ros下使用,可以分享相关经验,谢谢支持!!
回复 支持 反对

使用道具 举报

本版积分规则

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

GMT+8, 2024-3-29 15:32 , Processed in 1.978055 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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