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 つの istant 間で変更されたピクセルの数を返します。それが 200 以上の場合 (これを調整する必要があります)、アクションがコミットされます。

問題は、複数のボタンが必要なことです。

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 と pt1 を使用します。

changedPixels2 は常に 0 です (しきい値は画像に適用されません)。

どうすればこれを修正できますか?

ありがとう

アレッシオ

4

1 に答える 1

0

私の理解では、しきい値が正しい条件を満たしたときに BitmapData が変更されるということです。同じインスタンスでしきい値を 2 回実行する代わりに、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
}
于 2011-02-27T13:01:54.720 に答える