Flash与摄像头的交互Demo(运动捕捉、边缘检测、色彩跟踪等)

最近休假,好不容易从繁重的 工作中暂时脱身出来。
前段时间一直在考虑 视频游戏的时间,今天总算有空了,由于休假在家,脑袋似乎也比平常转得快了,写这个动态视频捕捉,居然只用了一个下午,看来,我早该朝这方面努力了。
现在这个Demo,用我这个临时找来的摄像头(cybass的,找驱动居然花了一上午时间)检测效果还是很好的,用头、肩等部位顶,撞,都能准确地识别。用细小的铅笔,灵敏度就差点了。
大家有摄像头的,都帮我测测,看在不同环境下,不同的机器反应如何。

demo1.swf


demo1_flv.swf

视频边缘检测Demo
使用视频边缘检测,能完成一些更精确的控制。

demo2.swf

demo2_flv.swf

色彩跟踪Demo
色彩跟踪是一个比较复杂的课题,因为色彩不断的在起着微小的变化,位置不停的在移动,如果再加上背景色的干扰,要准确的跟踪某个色块的运动,非常的耗时间不说,成功率也很低。
所以,我在这个Demo中,做了两个条件限制,让as2能跑起来。
一是限定了跟综色为蓝色,二是背景色中不能有大块的蓝色(允许有蓝色杂点),在实际应用中,这两点要求还是很容易满足的。因为相对来讲,对三原色的跟踪,要比跟踪复杂色彩要简单,效率也更高。
初始化过程:
测试的时候,先打开摄像头,能看到视频后,点“初始化鼠标”按钮,屏幕上如果有蓝色的话,会提示你先移除蓝色物体。把所有蓝色物体拿开后,会提示你将一个蓝色物体放置到中心的白色区域内,进行校验,一旦色彩校验成功,鼠标初始化就完成了。
在我的录像中,用的是一只常见的水笔,蓝色的笔头,至于MouseUp和MouseDown,我是通过拿手遮住笔头来实现的。
深入一步想,可以设计出一款特殊的手套,让每个手指头做为一个感应点,通过不同的手势,来和flash进行交互,非常cool的感觉哈。

有了运动检测,边缘检测和色彩跟踪,已经能做一些比较有意思的flash游戏和简单的应用了,但要做复杂应用,还需要努力研究图像识别技术,flash的执行效率放到一边先不说,图像识别这个东西真的好难,更何况是动态图像的识别。

我记得半年前有一个朋友跟我聊天,说他们公司做的flash,能准确的跟综到人的鼻子,眼睛等。现在再想想,真的很佩服他们的开发人员。

demo3.swf

demo3_flv.swf

静态背景消除Demo
大家都知道蓝屏技术,最基本的视频特技。严格的讲,任何静态的背景都是能消除的,这个Demo演示了这种有趣的效果。
请按Demo中的Step一步步来操作,否则会显得很乱。

demo4.swf

demo4_flv.swf

 

摘自:http://space.flash8.net/space/?14107/action_viewspace_itemid_357462.html

人机交互是当前最热门的话题,从 Microsoft 的 Kinect 到 Google 的 G-Glass ,都有可能成为划时代的产品。但与此同时,请别忘了在我们的电脑里面,本身就有一个非常独特的人机交互接口,Webcam。 该 Demo 是利用 Webcam 作为图形接口,结合 jp.maaash 作为人脸侦测的 AS3 程序,利用 ActionScript 你可以继续开发出有趣的人机互动软件,譬如人脸锁,使用人数计算器,人脸控制显示器,又或者是可以通过人脸侦测自动 Logout 等等 当然还可以通过 Opencv 做二次开发,利用其作为脸部识别的工具,这样在 Website 里面将会有更多有趣的应用,当然也可以用在智能家居的远程控制端。这些都是可行的。 首先我们需要的工具是 maaash 的库,这个可以google到很多下载的,当然本文最后提供的下载也有 主要代码如下 /** * Initializes the detector */ private function _initDetector () : void { _detector = new ObjectDetector; _detector.options = getDetectorOptions( ); _detector.loadHaarCascades( "face.zip" ); } 初始化face库,必须的。 /** * Gets dector options */ private function getDetectorOptions () : ObjectDetectorOptions { _options = new ObjectDetectorOptions; _options.min_size = 50; _options.startx = ObjectDetectorOptions.INVALID_POS; _options.starty = ObjectDetectorOptions.INVALID_POS; _options.endx = ObjectDetectorOptions.INVALID_POS; _options.endy = ObjectDetectorOptions.INVALID_POS; return _options; } 再设置下要判断的内容,大小啦等等 //timer for how often to detect _detectionTimer = new Timer( __faceDetectInterval ); _detectionTimer.addEventListener( TimerEvent.TIMER , _detectionTimer_timer); _detectionTimer.start(); //initalize detector _initDetector(); //set up camera _setupCamera(); //hook up detection complete _detector.addEventListener( ObjectDetectorEvent.DETECTION_COMPLETE , _detection_complete ); 做个timer,一个来输入bitmap数据,定义判断是否有face的event,setupCamera我就不post了,网上大把的。 就一句话就可以判断是否有face了。。接着就干你想干得事
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游鱼_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值