Re: [問題] Flash中webcam問題
http://langrisser1981.blogspot.com/2008/02/blog-post_9062.html
這我之前做的
你應該是想做像這樣的東西沒錯吧
我當初是用flash寫的
老實說如果用director會比較快,因為有現成的外掛可以用,而且速度比較快
flash也行,國外有很多範例可以看
當時我是自己寫了一個小小的公式來計算,也有寫成元件方便使用
不過原理很重要
我來說說我是怎麼思考的
繼續往下之前確認兩件事
1.你會用photoshop,或是影像處理,知道什麼叫做混色模式(blending mode)
2.你知道什麼叫做位元運算子(bitwise operator)
不知道的話,你應該永遠也做不出來偵測影像的程式...囧rz
首先,你用getPixel() 只能知道顏色
除非你帶了一個黑手套,然後在一個白畫面前面晃,這樣的反差抓顏色才有意義
不然你的程式會誤差到一個很可怕的程度
所以我的想法很簡單,我要知道“畫面的那個地方是有動作的”
也就是前面一個畫面,跟目前這個畫面,它的差別在哪裡
如果有用過photoshop,思考一下,假設現在你有兩張圖
畫面上的背景是黑色,上面都有一個紅色的圓
但是一張圖的圓在中間偏左,另一張在中間偏右
你要怎麼找出她們重疊的那一塊,跟不同的地方
很簡單,先把其中一張顏色反轉,再跟另一張圖作聯集運算就可以
我想有用過的人應該都會這招,這招就是我們要做的
換成數學表示,原理就是
首先我先把該點像素的顏色拆開,rgb值都分別拆開
假設該點像素是紅色,所以他的rgb值是0xff0000,我們用變數color代表
r=(0xff0000&color)>>16;
g=(0x00ff00&color)>>8;
b=(0x0000ff&color);
這樣你就得到了 r,g,b三個channel的值
這時候你可以把結果先轉成灰階化,但是因為這邊我知道我只要抓紅色
所以我只取r channel的結果
轉灰階化也不難啦,我都直接這樣轉 (0.3*r)+(0.6*r)+(0.1*b)
總之最後你會得到一個值,它的範圍是0~255...這就是重點
把這個值轉成二進位表示
以這個例子為例,畫面不是紅就是灰
所以這個值如果不是0xff(red channel)不然就是0x00(黑)
我把該值轉二進位表示,紅色就等於11111111,黑色就等於00000000
你把兩個畫面的“同一個取樣點”都做同樣的計算
好了以後
先把其中一個做not運算
假設在上一個畫面的時候,這一個取樣點是紅色
所以取到的值等於11111111,做not(!)運算,結果等於00000000(在此以a代表)
! 11111111
__________
a:00000000
接下來假設這個畫面紅圈移動開了,所以同樣的取樣點取到黑色
值等於00000000(在此以b代表)
把a跟b做or(|)運算
a:00000000
b:00000000
|_________
c:00000000
答案會是全黑
同樣的情況,我假設這個取樣點取到一樣是紅色
值等於11111111(在此以d代表)
a:00000000
d:11111111
|_________
e:11111111
答案會是全白
所以我就是用這個法來判斷
白色就代表這個點的像素沒有改變過,越黑就代表改變越大
沒錯,用這個方式還可以知道改變的幅度
既然知道哪個像素被更動了,就知道哪個點發生作用
這樣就可以作後續偵測了
當然怎樣設取樣點,怎樣最佳化,這要自己去調整
不過概念是這樣沒錯
說到這邊,完...
※ 引述《gargouille (lol)》之銘言:
: ※ 引述《yakeilee (嘟嘟啊~台南處處有好人)》之銘言:
: : 如果要用Flash中的webcam偵測畫面中的顏色區塊
: : 是否是要從Bitmap中擷取??
: : 真的不知道要從哪個指令下手編寫
: : 之前有大大推薦我要先去看help
: : 我看了...只找到偵測activity 事件
: : 拜託大大們指導迷津一下Orz
: : 或者是有沒有相關教學的書籍或網站可以推薦的??
: : 我看help看到眼睛快脫窗了~還是寫不出來>"<
: 正好我最近也想做這個相關的題目
: 我還沒有什麼成果出來
: 不過我想用的是
: BitmapData.getColorBoundsRect()
: 或
: BitmapData.getPixel()
: 這兩個去做吧
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.169.51.117
推
03/07 02:38, , 1F
03/07 02:38, 1F
推
03/07 14:20, , 2F
03/07 14:20, 2F
→
03/07 14:21, , 3F
03/07 14:21, 3F
→
03/07 14:21, , 4F
03/07 14:21, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 6 篇):
Flash 近期熱門文章
PTT數位生活區 即時熱門文章