开放源代码之美:Linux 下的 OpenNI(linuxopenni)
开放源码之美:Linux 下的 OpenNI
OpenNI(开放源码规范1.0)是一种免费的、用于开发与智能视觉功能相关的软件的开放源码标准。OpenNI是由三个非营利性组织提供支持,其中包括PrimeSense、犹太大学和知名用户界面设计公司,其中PrimeSense开发了深度传感器硬件,允许计算机着色,它可用于智能视觉定位开发,以及对机器人与人类之间的互动。OpenNI为程序员提供了一个统一的API,背后有一个可裁剪的核心,结合除PrimeSense外的其他供应商的硬件,用于支持进行形式感知分析的任务,例如语言识别和手势识别。自从OpenNI发布之后,采用本标准的交互式技术已经有了显著的发展。
Linux作为一个免费开源操作系统,一直在寻求使用最新技术来改善用户体验。OpenNI接口和Linux兼容性强,可以极大地改善机器人交互范例,因此,OpenNI的使用已成为许多机器人开放源码项目的核心组件之一。首先,OpenNI用作深度传感器系统,用于定位物体的位置,检测颜色和特征。此外,OpenNI定义的API支持Windows和Linux的深度传感器,这样,无论是开发移动机器人还是虚拟环境交互,都可以使用定义的API来控制用户行为和机器行为。因为这些API可以使用深度传感器和其他相关传感器,它们还可以帮助开发者构建蠕虫机器人、表面机器人和智能家居控制系统等系统。
OpenNI的另一个重要的优点是,它是跨平台的。由于它支持windows和Linux,以及Android,开发者可以更容易地实现自己的想法,不受平台限制。此外,OpenNI还可以通过OpenNI图形子系统,Android OS和Linux OS来支持三维动作,因此,开发者可以更容易地将机器行为映射到人类指令。在Android平台上,OpenNI还可以熟悉更多传感器,以跟踪三维动作,这样就可以让机器人更好地控制智能家居设备。
OpenNI支持的技术已在许多软件项目中发挥了重要作用,它有助于实现更多的智能视觉功能,进而为用户带来了最新的功能。OpenNI可以用于更智能的交互设备,并有了令人难以置信的发展。如果你在Linux下想要搭建一个智能视觉系统,那么,OpenNI应该是你的最佳选择。
//Linux 下使用 OpenNI
#include
//定义程序变量openni::Status rc = openNI::STATUS_OK;
openni::Device Device;
//连接设备rc = Device.Open(openni::ANY_DEVICE);
if (rc != openni::STATUS_OK){
printf("Failed to open device\n%s\n", openni::OpenNI::getExtendedError()); return -1;
}
//启动设备rc = Device.start();
if (rc != openni::STATUS_OK){
printf("Failed to start depth\n%s\n", openni::OpenNI::getExtendedError()); Device.close();
return -1;}
//获取深度数据流openni::VideoStream DepthStream;
rc =DepthStream.create(Device, openni::SENSOR_DEPTH);if (rc != openni::STATUS_OK)
{ printf("Failed to create depth stream\n%s\n", openni::OpenNI::getExtendedError());
Device.close(); return -1;
}
//启动深度数据流rc = DepthStream.start();
if (rc != openni::STATUS_OK){
printf("Failed to start depth stream\n%s\n", openni::OpenNI::getExtendedError()); DepthStream.destroy();
Device.close(); return -1;
}