[笔记] [ToY] Android相机程序:把Android变成Kinect第一步

几个月前看到了PoseEstimation的论文,大喜;人的姿势可以用tensorflow学习一下就搞定啦!
那多年来想用手机实现一个kinect的愿望不就已经基本达成了么,一看模型大小,400多MB,而且FPS也不是很高;再见…
不过先写一个实时抓相机图像的Android应用吧,随时准备把pose estimation接上去,这样写个restful server以后用手势就可以控制电脑了,绑定成鼠标事件,就能把Android变成Kinect。
目前的代码就是实现调用了两套相机API,一套Camera v1的,一套v2的兼容尽量广的平台。个人用起来v1的速度比v2感觉要快不少,燃饿,华为的Android竟然直接kill了v1,只有小米还支持v1…

代码敬上: https://github.com/stallpool/OpenEyes

代码都是七拼八凑从网上搜刮来的,这里就把它当成一个template,当以后写camera程序seed,最近还把它转成kotlin了。v1没什么好说的,就是参照官方的例子就好了;到了v2竟然没有好的例子!关键是我的实现不是直接显示surface,而是要抓到相机得到的图片,然后draw出来,这样方便加滤镜。在颜色编码上弄了N久,最后还是stackoverflow的大神解决了yuv420转N21转RGB的方法。

当然,除了直接显示相机设备实时抓到的图片,这个template还实现了简单的滤镜,比如直方图均衡器,3*3卷积核滤镜,Sobel边缘检测算子(就是提取图片中的边缘)。只是那个边缘检测算子FPS不够,还需要继续优化。暂时还不想把OpenCV直接编译进去,虽然会快很多。不过至少可以把tensorflow中mobile版的图像中对象识别拉进去玩了。
Toy完成。继续开发。Enjoy.

J.Y.Liu
2018.04.20

你可能感兴趣的:(Android,数据处理,Android,相机,Kinect)