纸箱大显身手 自制多点触控系统

酷玩派

在iPhone、iPad的影响力推动下,无论是MP4、手机,还是平板电脑,都以多点触控来吸引人们眼球。面对如此新潮的触控方式,但普通消费者往往难以为新奇昂贵的产品掏荷包。难道非要花钱才能解馋吗?事非绝对,我们可以在触控软件的帮助下,利用摄像头和废纸箱自制多点触控系统。

用纸箱打造“触控屏”

其实我们需要的材料很简单,一个普通摄像头、一个纸箱、一张可透光的普通白纸(如A3打印纸)以及透明胶带即可。纸箱最好是方形的,结构效果如图1。如果手头没有合适的箱子,可以用一个常见的牛奶箱来改造。先将其顶盖竖起以加大纵深,由于牛奶箱底边较长,我们可以剪1/3的底板作为侧面,粘合后即成为方盒。

随后,我们在盒子的底部中间开个小洞,把摄像头固定于底面,镜头朝上,USB连接线从洞内穿出(图1)。此时,打开摄像头查看纸盒深度是否合适,并适当裁剪。理想情况是让摄像头的视野覆盖纸面,在电脑上的视频窗口中是全黑画面,当手指触摸纸面时,形成投影,进而摄像头通过投影来识别多个手指的触控(图2)。

28-g15-1-1.jpg
图1
28-g15-1-4.jpg
图2

最后,将纸覆盖箱子顶部并用透明胶带封口(图3),注意,纸面应绷紧并保持水平,考究的话可在纸上贴一层透明膜加固。

28-g15-1-3.jpg
图3

触控游戏随手而动

Mtmini软件是实现触摸作用的关键,它整合了开源软件Touchlib以及触控烟花、鼠标模拟等Windows示例程序,此外,它还包括“Photo”、弹球等多个Flash触控程序(下载地址http://www.shudoo.com/bzsoft)。

接下来我们进行配置工作。我们先执行软件包内的Configuration.bat,它会弹出一个设置对话框,这里可以修改摄像头配置信息,默认即可。确认后,会蹦出一系列窗口,我们把一个手指放在盒面上,窗口0~2显示了摄像头拍摄到的原图及其相关灰度图。

窗口3包含了背景去除的阈值,可使用默认值。窗口4中的三个参数用来调节模糊程度,并对噪声点进行过滤。窗口5中能对手指尖的部分进行加亮,窗口6是最终的识别结果,它的参数可以对手指尖轮廓进行微调,使触控更精确(图4)。

28-g15-1-5.jpg
图4

现在,让我们开始激动人心的触控之旅。运行Demos/C++ Demos中的Smoke_Demo.bat,触摸盒面的每个手指,在窗口的对应位置会显示一个圆圈,在其周围会放出各色的烟花。随着手指的移动,烟花也会随之在原位置渐渐退散,在新位置重新绽放。如果效果不够显著,可以重复上一步调节参数。值得一提的是,该目录下的Windows_Mousedriver.bat程序能利用手指触控来模拟鼠标操作。

Flash示例游戏非常丰富,使用他们需要Java Runtime 1.6以上版本支持。首先运行Server.bat,在灰色窗口弹出后,用手指触摸纸盒以显示“Blob Detected”,然后双击Gatewat.bat,在“FLOSC”小窗口中点击“Start”,如果显示“Server Started”,那么Flash示例的触控功能便已生效,赶快开启一个Demo试试效果!

在Demos/Flash Demos中的“Photo” 圆圈表示手指的当前位置,能用来玩照片(图5)的拖动、缩放等,类似于在iPad上操作一样;而“MultiKey”则是两个触控电子琴,能使用多个手指分别触控它们,弹上一曲《十一月的肖邦》,在面板中还包括了调节音色等。

28-g15-1-6.jpg
图5

小结

如果你是编程爱好者,可以使用Touchlib的接口开发自己的触控应用,在http://nuigroup.com/touchlib/可以下载到它及其源代码。还觉得意犹未尽?在Mtmini官网(http://sethsandler.com/multitouch/mtmini/),能找到更丰富的触控软件和示例。