最近我在搞可穿戴摄像头的项目,主体采用的就是树莓派。先前我有买过一款Narrative Clip——这就是个可穿戴相机,不过这款相机的质量实在是让人悲伤。最近我正好要去欧洲四国游,所以就花了些时间自己来搞个可穿戴相机,结合我的黑客技术,应该是不成问题的。
我在背包肩带上挖了个洞,然后把树莓派摄像头模块(点击这里,从官方购买)放进去。将连接的带状线缆插入肩带,接入背包顶部的树莓派,是不是感觉隐藏得很好?
这么做的主要目的是防止雨水打湿电子设备,同时将之紧紧贴在包里,起到固定的作用,这样就不需要反复调整其位置了(之前的Narrtive Clip就需要反复进行位置掉正)。
解决了这两个问题,一切就好多了。右边这张照片,就是在大雨中,我的包完全湿透了的样子。
添加GPS模块
对我而言,这款相机的主要用途就是假日拿来拍照,所以我觉得可以给它加个LinkIt ONE模块。LinkIt One本身就是个无线开发板,用到这里是因为它支持GPS,可将GPS数据传至树莓派。这样一来,照片就能自动记录拍摄位置信息了,而且是很方便地记录到EXIF数据中。
很多人可能也知道GPS的尿性,有时候是就是做到100%精确,但有时候却不知偏到哪里去了。GPS的准确程度实际上主要取决于GPS搜星——反正我也不会去太远的地方,所以准确性应该是有保证的。
构建移动应用程序
我先前在用的Narrative Clip相机,最令人不爽的地方在于,其可控性比较糟糕:拍照的时候也没有足够的提示,也不知道拍的行不行、好不好。
其实利用好树莓派3之上板载的WiFi芯片(AP模式),就能解决这个问题。开启WiFi热点,搭配连接相应的应用——应用可以展示刚拍的照片。这个应用是采用Flask web框架搭建的。就这么个小功能的加入,令这台相机的便利性提升良多,至少可控性加强了不少,可对拍摄的照片进行删除和重命名操作。
而且这个web应用,用起来感觉相当不错,能够保持和树莓派一整天的连接不断开。这应该算是整个改造工程中,特别成功的一个步骤,原本我对此web应用没抱太大期望。所以其实我还做了个备选方案:用Apache,如果Flask应用搞不定的话,Apache还是可以作为最基本的文件夹浏览器来用的。
RTC问题
在整个项目中,我遇到比较大的问题就是RTC(实时时钟)问题了。其实原本我就知道会遇到RTC问题,因为树莓派本身是不带RTC芯片的,但没想到问题会这么大。
为此,我还特意在其中加了Server时间戳和Javascript时间戳。这样就便于进行时间的对比了,将相机设备认定的时间,和手机上的时间进行比较。
我发现,如果我关掉相机,第二天早晨再开,相机的时间会重置到上次开启的时间——也就是差不多24小时前。由于照片文件名是基于时间戳命名的,时间被重置以后,如果直接就开始拍照,新的照片就会覆盖旧照片。这的确是个很悲剧的问题。
要解决这一问题,最佳方案应该是始终保持设备开启。但问题是,我配的电源只能保持30小时的续航——如果带着它出去度假几天的话,中途没电,就得歇菜好几次。好在我选择度假的地方是西欧,互联网很发达,所以我每隔1-2天就将已经拍摄好的照片先拿出来。
如果你觉得这个问题无法忍受的话,可以选择购买RTC芯片,也就6欧元。
延时拍摄成果展示
来展示一下拍摄成果!上面这段时间是延时拍摄组成的视频,也就是设定每个一段时间就拍摄一张照片,然后将这些照片组合起来做成视频。虽然还是花了点时间删除一些错误的照片,不过整体效果的确比Narrative Clip拍的好多了。
神奇的OpenCV
度假结束之后,也就拍了一堆照片了。这么便携的产品,拍摄效果的确是不怎么样,不过试试用OpenCV库来改善以下效果。比如上面这张图,简单改一下就会有很不错的效果提升。不过因为时间有限,上面的延时拍摄视频就不这么搞了。然而如此隐蔽的便携式拍摄产品,该怎么用,你也懂吧?
有兴趣的同学还在GitHub上查看该项目
*参考来源:manoj.ninja ,FB小编老王隔壁的白帽子翻译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)