2011-11-19 45 views
2

我正在使用網絡攝像頭獲取視頻饋送,然後對此視頻饋送執行動作跟蹤。運動跟蹤器不斷返回(x,y)座標。你如何製作和識別手勢?

我想用這些(x,y)來識別諸如「向左滑動」,「向右滑動」,「向上滑動」或「向下滑動」等手勢。

我如何製作和存儲這些手勢的模板,以及如何找出/識別手勢的其中一個 是否已經發生?

預先感謝您:)

PS:我使用Flex 4和ActionScript 3.0。如果有人能夠用邏輯幫助我,我可以用ActionScript編寫它。

+0

我跑進[鏈接] http://gestureworks.com之前,它可能不是一個現成的解決你的問題,但希望裏面的邏輯可能會激發一個解決方案。 –

回答

2

你應該將你的任務分成更小的子任務。在計算機視覺領域,沒有任何東西可以像所有環境下都可以使用的通用手勢檢測一樣。

首先,您需要能夠檢測到運動。有幾種方法可以做到這一點,例如背景扣除或斑點跟蹤。

然後,您需要從圖像中提取某些功能,例如一隻手。同樣,有多種方法可以做到這一點。從非常容易出現不同照明條件的膚色近似/評估開始,到更真實地嘗試「分析」物體形狀的更高級技術。這些算法隨着時間的推移「學習」一隻手應該是什麼樣子。

我只能推薦購買一本關於計算機視覺的好書,併爲文章研究網絡。還有像OpenCV這樣的庫可用於瞭解更多關於實現方面的內容。應該有幾個OpenCV端口用於ActionScript 3.我也可以推薦Eugene Zatepyakin的文章和工具(http://blog.inspirit.ru)。他用ActionScript 3做了很棒的簡歷。

長話短說,你應該研究運動跟蹤和特徵提取。

3

我能想到的工作方法是沿着手勢有一系列表示點的(X,Y)座標。在小範圍內,如果通過屏幕的手勢被圖示如此:

| 1 | 1 | 1 |

| 1 | 0 | 0 |

| 1 | 0 | 0 |

和表示(從表示0,0左上角):

(0,2)(0,1)(0,0)(0,1)(0,2)

將x,y座標分解爲單獨的2維數組,其中當前座標和第一個點之間的總行程距離(在所有情況下,在本例中它將遞增1),因此您將有兩個數組:

X: (0,0)(1,1)(2,2)

Y:(0,1)(1,1)(2,2)

現在對每個數組做一個最小二乘擬合,以找出x中變化的最接近表示形式,並將y變化爲二次函數。對你的每一個判斷的手勢做同樣的事情,然後插入你確定的手勢的x,y座標到用戶的手勢的二次函數和你設計的每個確定的手勢,並且看看它匹配哪一個最接近的手勢。這是你的姿態。

(我從來沒有嘗試過處理的手勢,但我不明白爲什麼這是行不通的)