第一阶段:LeapMotion Frame data的收集/序列化/反序列化
概述:研究LeapMotion java API,开发出收集Frame数据并序列化成byte[]之后存放至以手势名称命名的文件中,以及将已经存储了Frame数据的文件凡序列化为Frame对象的程序。
参考leapMotion-java API序列化与反序列化demo编写了最简单的程序。
程序功能:将leapMotion采集到的帧序列化成byte数组之后存放至文件中。每个文件可以存放若干帧数据。(数据格式-->帧长度+Fram数据+帧长度+Fram数据)编程思路:
step1:新建java工程,导入LeapMotion java API和相关动态库(leap.jar Leap.dll LeapJava.dll)
step2:导入Leap中的Sample.java,测试step1中相关文件是否成功导入
step3:开发自己的程序(采集Frame数据-->序列化并存储至文件;文件反序列化获得List<Frame〉)
step3最终开发结果包含下面几个类
LeapMotionFrameFileOperation.class(序列化与反序列化的具体实现类)
CollecteFrameDataListener.class(LeapMotion的Listener) CollectFrameData.class(main:调用序列化函数采集Frame数据并存储成文件) DisplayFileData.class(main:调用反序列化函数读取Frame文件获得 List<Frame>集合)step4:将上述开发结果导出成可执行程序
eclipse中选中工程,export
解压并添加相关文件如dll,最终结果如下
step5:进入DOS,使用上述程序
1)收集leapMotion的Frame数据,并且将其序列化后存储至一个TXT文件中
DOS进入runnable.zip解压后的文件夹 运行java CollecteFrameData 结合leap motion自带工具visualizer,待手势稳定之后在DOS中输入手势名称作为Frame数据存放的文件的名称 程序运行完毕之后,可以看到runnable/LeapMotionData/FrameData/文件夹下有你刚刚存的文件2)查看Frame文件中究竟都存储了哪些Frame对象序列化后的结果
DOS进入runnable.zip解压后的文件夹 运行java DisplayFileData 根据提示输入想要查看的文件名,如gesture1.txt 就可以看到文件数据反序列化变成的Frame对象数据 (注:上述运行方法只能将结果输出到DOS命令行窗口, (可以使得在命令行输出的数据信息重定向输出到文本文件中,具体按照下面的方式进行: (例如,在DOS命令行输入java DisplayFileData 〉E:\gesture1Frame.txt (就可以将原本应该在DOS命令行窗口输出的数据输出到E:\gesture1Frame.txt文件中 (小bug:现在有些东西还没有调通,只能先将gesture1.txt之类的文件先拷贝至runnable文件夹下,然后按照上述步骤操作才可以)