摘要:
1IoC理论的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。图1:软件系统中耦合的对象 如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各个齿轮分别带动时针、分针和秒针顺时针旋转,从而在表盘上产生正确的时间。图1中描述的就是这样的一个齿轮组,它拥有多个独立的齿轮,这些齿轮相互啮合在一起,协同工作,共同完成某项任务。我们可以看到,在这样的齿轮组中,如果有一个齿轮出了问题,就可能会影响到整个齿轮组的正常运转。 齿轮组中齿轮之间的啮合关系,与软件系统中对象之间的耦合关系非常相似。对象之间的耦合关系是无 阅读全文
摘要:
通过TinderBox生成的代码很简单,整个代码如下:#include "cinder/app/AppNative.h"#include "cinder/gl/gl.h"using namespace ci;using namespace ci::app;using namespace std;class CinderProjectApp : public AppNative { public: void setup(); void mouseDown( MouseEvent event ); void update(); void draw();};v 阅读全文
摘要:
Cinder:http://libcinder.org/,当前版本是0.8.5,代码托管位置:https://github.com/cinder/Cinder.git 下载Cinder之后,其目录结构如图: Cinder提供了一个可用于快速创建工程的工具TinderBox,在目录tools\TinderBox-Win下,运行该程序,界面如下: Template:可选择不同的模板,默认的有Basic OpenGL和ScreenSaver,还有一个特定于Mac系统的CocoaView OpenGL 3个选项。如果本地装有其他的库,比如Box2D或者OpenCV等,还会出现相应的选项。... 阅读全文
摘要:
RGB数据的获取与景深数据获取类似,不同的就是数据帧的数据格式是openni::RGB888Pixel类型的。直接通过代码来了解: 1 #include <conio.h> 2 #include <iostream> 3 using namespace std; 4 5 #include <OpenNI.h> 6 #pragma comment(lib, "openni2.lib") 7 8 #include <opencv/cv.h> 9 #include <opencv/highgui.h>10 #pragma 阅读全文
摘要:
上一节讲了OpenNI2开发Kinect的基本框架,但是,具体的数据流获取并没有详细介绍,本篇文章开始介绍数据流的获取与处理。采用OpenCV进行图像的处理与显示。 获取景深数据有2种方式,一种是轮询,另外一种是设置一个Listener,当有新的数据帧到达时,会通知该Listener。下面分别实现这两种方式。 先上代码,注:为了更清晰的展示主要过程,对于一些错误及异常都没有进行判断,代码写的比较简陋。 方式一:轮询 1 #include <iostream> 2 using namespace std; 3 4 #include <OpenNI.h> 5 #pragma 阅读全文
摘要:
图像噪声是在图像处理中经常会遇到的问题,它的存在会使图像的质量下降,因此解决图像噪声问题在图像处理过程中是不可忽视的。 根据噪声的性质不同,消除噪声的方法也有所不同。随机噪声是一种线索最少却最常见的噪声。 对于多帧图像,取其平均值,帧数越多越接近实际值。对于单帧图像,随机噪声隐藏的像素的实际灰度值是不可知的,此时,只能尽量使噪声对图像的影响最小化。噪声的灰度与周围像素的灰度之间有明显的灰度差,正是这些明显的灰度差造成了视觉上的障碍。一般情况下,把利用噪声的性质来消除图像中噪声的方法称为图像平滑(image smoothing)。 一、均值滤波器 均值滤波器(averaging filter.. 阅读全文
摘要:
1. 下载源码并解压2.sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev cmake libswscale-dev libjasper-dev3. 进入解压后的目录(opencv-2.4.5)4. 依次输入下列命令cmake .makesudo make install5. 编辑配置文件sudo gedit /etc/ld.so.conf.d/opencv.conf将下面内容添加进去/usr/local/lib6. 运行下面命令 阅读全文
摘要:
本人开发Kinect程序,采用的是OpenNI2,其中,会用到OpenCV、Nite2等内容。并且,以后我所说的OpenNI如果不是特殊说明,都指的是OpenNI2。 顺便提一下:本人也是新手,是一边学习,一边把自己的心得体会写下来,其中,难免会出现一些疏漏或者错误的地方,如果您不幸看到了我的文章,还请多多包涵~ :D 要做开发,首先要做的就是把开发环境搭好,具体的步骤,由于OpenNI官网上有详细的说明,本文不再赘述。需要注意的一点就是我前些天发的那个文章,如果自己的vs是32位的,即便本机系统是64位系统,也要下载32位的安装包。 下面,开始进入正题。 1. 包含OpenNI.... 阅读全文
摘要:
1. deb文件:例如google的chrome就是该格式。 安装方法:sudo dpkg -i package_file.deb 卸载方法:sudo dpkg -r package_name2. tar.gz文件:例如eclipse 安装方法:1. 解压tar -zxvf package_file.tar.gz2. 移动目录sudo mv package_name /usr/local/3.启动/usr/local/eclipse/eclipse 阅读全文
摘要:
今天下个OpenNI2来玩,本地环境win8 64位, vs2010。来到OpenNI官网,心想,咱的机器是64的,下载OpenNI2 64位的那是必须的(刘大脑袋的语气),大概1分钟,下载好了,把相应的环境配置好,按照官网的配置就可以,也就是设置头文件目录,库文件目录,再把相应的lib文件加到工程中。步骤如下:Visual StudioOpen a new project or an existing one with which you want to use OpenNIIn the Visual Studio menu, open the Project menu and choo.. 阅读全文