2011-02-27 105 views
1

即時通訊使用Bitmapdata對象的Threshold方法來製作來自攝像機視頻源的某些動作按鈕。使用雙閾值

它的工作與1個按鈕(上1個矩形1個閾值,即我的按鈕在屏幕上),這樣的:

//... 
actualFrame.draw(oldFrame, new Matrix(), null, "difference"); 
changedPixels = actualFrame.threshold(actualFrame,rect,pt1,">",0xFF111111,0xFF00FF00,0x00FFFFFF,false); 
    if (changedPixels > 200) { 
    //my actions 
    } 
//... 

這是工作,閾值返回變化像素的2個istants之間的數,如果該是> 200(我必須調整),一個動作是承諾。

的問題是,我需要超過1個按鈕,

actualFrame.draw(oldFrame, new Matrix(), null, "difference"); 
changedPixels = actualFrame.threshold(actualFrame,rect,pt1,">",0xFF111111,0xFF00FF00,0x00FFFFFF,false); 
if (changedPixels > 200) { 
     //my actions 
} 

changedPixels2 = actualFrame.threshold(actualFrame,rect,pt2,">",0xFF111111,0xFF00FF00,0x00FFFFFF,false); 
if (changedPixels2 > 200) { 
    //my actions 
} 

我使用相同的尺寸爲按鈕(矩形矩形是相同的),和不同的(X,Y)位置: PT2 VS PT1

但是這是行不通的,changedPixels2始終爲0,(心不是應用於圖像的閾值)

我如何糾正呢?

感謝

阿萊西奧

回答

0

我的理解是,閾值改變的BitmapData當滿足條件正確。你有沒有嘗試創建另一個actualFrame的實例,而不是在同一個運行閾值兩次?

actualFrame.draw(oldFrame, new Matrix(), null, "difference"); 
changedPixels = actualFrame.threshold(actualFrame,rect,pt1,">",0xFF111111,0xFF00FF00,0x00FFFFFF,false); 
if (changedPixels > 200) { 
     //my actions 
} 

actualFrame2.draw(oldFrame, new Matrix(), null, "difference"); 
changedPixels2 = actualFrame2.threshold(actualFrame2,rect,pt2,">",0xFF111111,0xFF00FF00,0x00FFFFFF,false); 
if (changedPixels2 > 200) { 
    //my actions 
} 
+0

這會是4-5按鈕很慢,我想我試了一下(W/2個按鈕),但它是laggy,而不是100%的工作,我以後會再一次嘗試 – alessio 2011-02-27 17:53:57