Kinect&OpenNI开发(一) 编程环境搭建与测试_java测试openni simple-程序员宅基地

技术标签: Kinect  OpenCV  OpenNI  

本来用VS用的好好的,但是转到了Ubuntu后发现直接抓瞎= =

本着菜鸟的心态老老实实地用了Eclipse(编译C++要用Helios,Mars各种错 ),还发现网上资料奇少,仅有的资料还错误很多,特此编写此文章,希望可以帮助后来的同学不要浪费不必要的时间在搭建软件环境上。

注:我系统是Ubuntu 14.04,64位的。另外,OpenCV,OpenGL,OpenNI,Nite的安装我就不赘述了,网上资料有很多。

本文基本参考Ubuntu下安装配置OpenNI,OpenCV,并由此文章修改而来。

一、安装Eclipse

1.下载

http://www.eclipse.org/downloads/

因为我是用C++,所以下载的IDE 4 C/C++ Developers

2.解压出eclipse文件夹并移动到想要的文件夹下

3.创建桌面链接

# gedit /usr/share/applications/eclipse.desktop
写入以下内容
[Desktop Entry]
Name=Eclipse
Comment=Eclipse SDK
Encoding=UTF-8
Exec=(文件夹所在位置)eclipse/eclipse
Icon=(文件夹所在位置)eclipse/icon.xpm
Terminal=false
Type=Application
Categories=Application;Development;


二、OpenCV(我的版本是3.1.0)

1.使用eclipse建立新工程,如testOpenCV

2.在左侧的project exploer中右击testOpenCV,点properties,在对话框中选择C/C++ Build->settings->GCC C++ Compiler(如果用C写就选GCC C Compiler)->Directories,在右侧Include paths(-l)里点右边绿色加号,添加路径/usr/local/include/opencv

3.然后再选择GCC C++ Linker->Libraries,在Libraries (-l)中添加opencv_core,opencv_highgui,如果需要其他库也依次添加。库的路径是/usr/local/lib,因此要添加 Library search path (-L):/usr/local/lib。

测试代码:

#include <cv.h>
#include <opencv2/opencv.hpp>//原文中都是早期版本OpenCV用的函数名和库文件,并不能通过编译
 
using namespace cv;
 
int main( )
{
  Mat image;
  image = imread( "lena.jpg", 1);
 
 namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );
  imshow( "Display Image", image );
 
  waitKey(0);
 
  return 0;
}


 

(Lena.jpg自己随便找一张图片就行,放到cpp所在的文件夹下)

三、OpenNI

1.新建一个空的或helloworld工程,如kinectOpenNI;

2.在左侧的project explorer中右击kinectOpenNI,点properties,在对话框左侧中选择C/C++ Build->Settings->GCC C++ Compiler(如果用C写就选GCC C Compiler)->Includes

在右侧Include paths(-l)里点右边绿色加号,添加两个路径:

/usr/include/ni

/usr/include/nite

3.然后再选择GCC C++ Linker->Libraries,在Libraries (-l)中添加
OpenNI

glut

GL(原文中没有提到的库,但是必须要用到)

XnVNite(注意XnVNite可能有版本号,要到你的/usr/lib目录下看一看,有个文件叫libXnVNite_XXXX.so之类的,我的是libXnVNite_1_5_2.so,所以我填的是XnVNite_1_5_2,反正就是随机应变吧,填不对的话它会报错说找不到库)

由于这几个库都是在系统/usr/lib/目录下的,因此不用添加Library search path (-L)。

测试代码:

/*******************************
* *
*OpenNI 1.x Alpha *
*Copyright (C) 2011 PrimeSense Ltd. *
* *
*This file is part of OpenNI. *
* *
*OpenNI is free software: you can redistribute it and/or modify *
*it under the terms of the GNU Lesser General Public License as published *
*by the Free Software Foundation, either version 3 of the License, or *
*(at your option) any later version.*
* *
*OpenNI is distributed in the hope that it will be useful,*
*but WITHOUT ANY WARRANTY; without even the implied warranty of *
*MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
*GNU Lesser General Public License for more details.*
* *
*You should have received a copy of the GNU Lesser General Public License *
*along with OpenNI. If not, see <http://www.gnu.org/licenses/>. *
* *
***********************************/
//---------------------------------------------------------------------------
// Includes
//---------------------------------------------------------------------------
#include <XnOS.h>
#include <GL/glut.h>
#include <math.h>
 
#include <XnCppWrapper.h>
using namespace xn;
 
//---------------------------------------------------------------------------
// Defines
//---------------------------------------------------------------------------
#define SAMPLE_XML_PATH "/home/dna/kinect/OpenNI-Bin-Dev-Linux-x64-v1.5.7.10/Samples/Config/SamplesConfig.xml"
 
#define GL_WIN_SIZE_X 1280
#define GL_WIN_SIZE_Y 1024
 
#define DISPLAY_MODE_OVERLAY 1
#define DISPLAY_MODE_DEPTH 2
#define DISPLAY_MODE_IMAGE 3
#define DEFAULT_DISPLAY_MODE DISPLAY_MODE_DEPTH
 
#define MAX_DEPTH 10000
 
//----------------------------
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010279433/article/details/50960639

智能推荐

hdoj Be the Winner 2509 (NIM博弈)_hduojbe the winner-程序员宅基地

文章浏览阅读326次。Be the WinnerTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2713 Accepted Submission(s): 1484Problem DescriptionLet's consider m_hduojbe the winner

unity 手游虚拟摇杆代码参考-程序员宅基地

文章浏览阅读3.2k次。手游 摇杆_摇杆代码

memlock过低导致的数据库性能问题(r6笔记第10天)-程序员宅基地

文章浏览阅读824次。今天在一台备库机器上准备搭建active data guard ,在主库上做配置的时候,发现主库的反应有些慢,主要的感觉就是敲命令的时候似乎都有些停顿。带着疑问查看了下数..._memlock limit is less than 64mb

推荐几本shell学习的书 (r9笔记第98天)-程序员宅基地

文章浏览阅读180次。周末整理了一下书架,一来书架上实在是放不下东西了,四层书架,两层在闺女的触及范围之内,所以直接拿胶带封住,留下两层勉强可用。二来书架已经不是放书的地儿,生活用品已..._shell 书籍 推荐 杨建荣

PE文件格式_pe工具的文件扩展名-程序员宅基地

文章浏览阅读1.2k次。PE文件格式分析及修改(图)12009-01-09 14:08PE 的意思是 Portable Executable(可移植的执行体)。它是 Win32环境自身所带的执行文件格式。它的一些特性继承自Unix的Coff(common object file format)文件格式。“Portable Executable”(可移植的执行体)意味着此文件格式是跨Win32平台的_pe工具的文件扩展名

Bluetooth MESH探究 --- (7) BLE core spec之为什么BLE能有更低功耗_ble 为什么功耗低-程序员宅基地

文章浏览阅读3.6k次。BLE与其它蓝牙协议最典型的区别就是BLE是专门为低功耗、低复杂度以及低成本设备设计。那么,BLE是通过什么方法做到更多功耗的呢? 对于蓝牙设备甚至可以说对于所有无线通信设备来说,最大的功耗就来自于射频电路部分。比如,对于TI CC2540芯片来说,RF处于接收状态的电流为19.6mA,RF处于发射状态的电流为24mA,而RF处于sleep状态的电流仅为0.9uA。所以,如果能够最大限度地_ble 为什么功耗低

随便推点

纳什博弈论-程序员宅基地

文章浏览阅读1.5k次。纳什博弈论的原理与应用   1950年和1951年纳什的两篇关于非合作博弈论的重要论文,彻底改变了人们对竞争和市场的看法。他证明了非合作博弈及其均衡解,并证明了均衡解的存在性,即著名的纳什均衡。从而揭示了博弈均衡与经济均衡的内在联系。纳什的研究奠定了现代非合作博弈论的基石,后来的博弈论研究基本上都沿着这条主线展开的。然而,纳什天才的发现却遭到冯·诺依曼的断然否定,在此之前他还受到爱因斯坦的冷遇。但是骨子里挑战权威、藐视权威的本性,使纳什坚持了自己的观点,终成一代大师。要不是30多年的严重精神病折_纳什博弈论

ios注意事项-程序员宅基地

文章浏览阅读177次。1.tableview顶部留白问题当cell的类型是plaint类型时,直接设置self.automaticallyAdjustsScrollViewInsets=NO;应该就可以的当cell的类型是group类型时,此时要去掉tableView顶部的空白需要两步:1.设置tableView的tableHeaderView高度为0.5;self.MenuTable.tableHea

数据结构——不带头节点的单链表_不带图节点的单链表类的成员函数-程序员宅基地

文章浏览阅读403次。作者:小琛欢迎转载,请标明出处单链表的概念概念:**链表是一种物理存储结构上非连续、非顺序,逻辑上连续的结构。**是通过链表中的指针链 接次序实现的。如下图:单链表的实现鉴于后续的面试和oj题目类型,这里实现不带头节点的单链表Plist.h#ifndef _LIST_H__#define _LIST_H__#include <stdio.h>#include &l..._不带图节点的单链表类的成员函数

Cento7配置网络及代理_centos7网卡不支持代理-程序员宅基地

文章浏览阅读528次。1、配置网络编辑网卡配置文件[root@localhost yum.repos.d]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736TYPE=EthernetBOOTPROTO=noneDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_..._centos7网卡不支持代理

input输入框赋值、取值_input框赋值取值-程序员宅基地

文章浏览阅读3.9k次。目录htmleasyuilayui自己做个记录,在对页面进行修改,开发的时候,总是去查资料html<input id="cpno" name="cpno" value="" />js: 赋值: $('#cpno').val( "CSDN有限公司"); -------方式1 $('#cpno').val("setValue", "CSDN有限公司"); -------方式..._input框赋值取值

如何有效预防CC攻击?_怎么防止被c&c攻击-程序员宅基地

文章浏览阅读348次。CC攻击也是属于流量型攻击中的一种,大部分的高防机房,是可以承受住大量的DDOS攻击的,这些防护主要来源于硬防。CC攻击可以算的上是DDOS攻击的一个升级版,如果想要抵御CC攻击可没有抵御DDOS攻击那么简单,单靠硬防还是不够的,必须要配合人工进行策略调控才可以防御住。CC攻击基本上都是针对端口的攻击,所以网站遇到CC攻击的几率会更大一些。在攻击模式上与一般的流量型攻击是差不多的,主要是通过伪装成正常的用户不停的对网站进行访问,从而导致服务器资源耗尽,无法正常的被访问。那么我们应该怎么去预防CC攻击呢?_怎么防止被c&c攻击

推荐文章

热门文章

相关标签