转载请注明出处:http://blog.csdn.net/lxk7280


首先,要接触一下KinectOrbit这个摄像机库,这篇文章中有这个库的下载网址和简单的介绍:http://blog.csdn.net/lxk7280/article/details/38184355。将下载得到的文件放到对应的Processing的一个子目录后,就可以使用。



   KinectOrbit库下的鼠标和键盘的操作方法:
1.右键拖拽:摄像机摇拍。
2.左键拖拽:绕对象旋转。

3.滚动:缩放操作。
4.P键保存。O键退出。再次执行程序后,会以上次保存的试点为開始,视点的參数储存在数据目录下的一个名为:“orbitSet_0.csv”的文件中,假设该文件被删除。则以默认值为開始。



    先附上三张这次的效果图:
1.近距离视角

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHhrNzI4MA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">



由于Kinect的深度范围和视野角度范围例如以下:

顏色與深度 1.2 ~ 3.6 公尺
骨架追蹤 1.2 ~ 3.6 公尺
視野角度 水平 57 度、垂直 43 度
我的部分身体在Kinect的深度摄像头所能拍摄到的范围之外,因此在图片中没有显示出来。


2.中等距离视角

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHhrNzI4MA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">


非常明显能看到我背后的桌子和我的手臂在后面的大大的投影。


3.远距离视角

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHhrNzI4MA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">







代码:
第一步:导入自己须要用到的三个库
import processing.opengl.*;
import SimpleOpenNI.*;
import kinectOrbit.*;

第二步:定义对象myOrbit和kinect

KinectOrbit myOrbit;
SimpleOpenNI kinect;

第三步:初始化对象。启动深度摄像头

void setup(){
size(800,600,OPENGL);
myOrbit = new KinectOrbit(this,0);
kinect = new SimpleOpenNI(this);
kinect.enableDepth();
}

第四步:在3D渲染下,绘点云和视锥(即在屏幕上可见的3D区域。kinect视锥意思为kinect在空间中能够看到的区域。)

void draw(){
kinect.update();
background(0); myOrbit.pushOrbit(this);
drawPointCloud();
kinect.drawCamFrustum();
myOrbit.popOrbit(this);
}

第五步:完毕绘点云函数

void drawPointCloud(){
int[] depthMap = kinect.depthMap();
int steps = 3;
int index;
PVector realWorldPoint; stroke(255);
for(int y=0;y < kinect.depthHeight();y += steps){
for(int x=0;x < kinect.depthWidth();x += steps){
stroke(kinect.depthImage().get(x,y));
index = x + y * kinect.depthWidth();
if(depthMap[index] > 0){
realWorldPoint = kinect.depthMapRealWorld()[index];
point(realWorldPoint.x,realWorldPoint.y,realWorldPoint.z);
}
}
}
}







版权声明:本文博客原创文章。博客,未经同意,不得转载。

Kienct与Arduino学习笔记(2) 深度图像与现实世界的深度图的坐标的更多相关文章

  1. 【opencv学习笔记六】图像的ROI区域选择与复制

    图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...

  2. Arduino学习笔记① 初识Arduino

    1.前言     近段时间,博主陆续更新了ESP8266学习笔记,主要开发平台是Arduino.但是,对于很多无基础的初学者来说,甚至不了解Arduino是什么.因此,博主决定加入一个Arduino学 ...

  3. OpenCV 学习笔记 04 深度估计与分割——GrabCut算法与分水岭算法

    1 使用普通摄像头进行深度估计 1.1 深度估计原理 这里会用到几何学中的极几何(Epipolar Geometry),它属于立体视觉(stereo vision)几何学,立体视觉是计算机视觉的一个分 ...

  4. 学习笔记之深度学习(Deep Learning)

    深度学习 - 维基百科,自由的百科全书 https://zh.wikipedia.org/wiki/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0 深度学习(deep lea ...

  5. OpenCV2学习笔记04:图像的读取与显示

    1. 图像读取:imread() Mat imread( ) 参数介绍: filename: 待加载的文件名称. flags: 此标志用来指定被加载图像的颜色类型(color type).这个标志的取 ...

  6. 【Stage3D学习笔记续】真正的3D世界(一):透视矩阵

    如果各位看官跟着我的学习笔记一路看过来的话,一定会吐槽我的,这都是什么3D啊?从头到尾整个都是在使用GPU绘制一堆2D图像而已,的确,之前我们一直使用正交矩阵利用GPU加速来实现2D世界的展示,算不上 ...

  7. OpenCV3 for python3 学习笔记3-----用OpenCV3处理图像一

    本文的内容都与图像处理有关,这时需要修改图像,比如要使用具有艺术性的滤镜.外插(extrapolate)某些部分.分割.粘贴或其他需要的操作. 1.不同色彩空间的的转换 OpenCV有数百种关于在不同 ...

  8. CS224n学习笔记1——深度自然语言处理

    一.什么是自然语言处理呢? 自然语言处理是计算机科学家提出的名字,本质上与计算机语言学是同义的,它跨越了计算机学.语言学以及人工智能学科. 自然语言处理是人工智能的一个分支,在计算机研究领域中,也有其 ...

  9. Arduino学习笔记⑤ 模拟IO实验

    1.前言     还记得前几个我们都是在讲解数字IO,而其实我们生活中大多数信号都是模拟信号,如声音以及温度变化.在Arduino中,常用0~5v的电压来表示模拟信号. 1.1 模拟输入功能      ...

随机推荐

  1. Hadoop Spark 集群简便安装总结

    本人实际安装经验,目的是为以后高速安装.仅供自己參考. 一.Hadoop 1.操作系统一如既往:①setup关掉防火墙.②vi /etc/sysconfig/selinux,改SELINUX=disa ...

  2. POJ 2942 Knights of the Round Table - from lanshui_Yang

    Description Being a knight is a very attractive career: searching for the Holy Grail, saving damsels ...

  3. SecureCRT学习之道:SecureCRT 常用技巧

    快捷键: 1. ctrl + a :  移动光标到行首 2. ctrl + e :移动光标到行尾 3. ctrl + d :删除光标之后的一个字符 4. ctrl + w : 删除行首到当前光标所在位 ...

  4. zoj3822 期望dp

    每天在一个n*m的棋盘上放棋子,问使得每一行,每一列都有棋子的期望天数 dp[n][m][k] 表示用k个棋子占据了n行,m列,距离目标状态还需要的期望天数 那么dp[n][m][k] = p1 * ...

  5. Ubuntu常用软件推荐,图文详细说明及下载

    抛开Windows,其实在任何一款Linux发行版本中,我们都有超级大量的软件来安装,使用.这次的教程,我就以Ubuntu为例,来给大家推荐一些我认为不错的软件 声明: 1.本文提到的全部软件,都在文 ...

  6. linux 流量监控 ---iptraf的安装及使用

    一.安装iptraf 我用的是centos,切换到root用户,执行 yum install -y iptraf 二.使用 1.直接输入iptraf,进入软件,按任意键继续 2.我主要是第二项和第三项 ...

  7. CentOS6.5 Nginx优化编译配置

    说到Nginx,它真的算是我在运维工作中的好朋友,它优异的性能和极高的工作效率实在是让人大爱,来自internet的报告称其epoll模型能够支持高达50000个并发连接数. Epoll[维基百科]: ...

  8. JQuery Easy Ui (Tree树)详解(转)

    第一讲:JQuery Easy Ui到底是什么呢? 首先咱们知道JQuery是对Java Script的封装,是一个js库,主要提供的功能是选择器,属性修改和事件绑定等等.. JQuery ui是在j ...

  9. 【原创】leetCodeOj --- Dungeon Game 解题报告

    原题地址: https://oj.leetcode.com/problems/dungeon-game/ 题目内容: The demons had captured the princess (P) ...

  10. 神马是AB測试?

    手机响起了短信提示音,桂芬拿起手机,滑动解锁,看到是来福的短信,心里不禁一阵小鹿乱撞.     "喜欢看<冰封重生之门>吗?"     如此充满暗示意味的短信让桂芬激动 ...