使用双重阈值

时间:2011-02-27 10:50:28

标签: flash actionscript webcam motion-detection

使用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个等值线之间的改变像素数,如果是> 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
}

我对按钮使用相同的尺寸(矩形rect是相同的),以及不同的(X,Y)位置:pt2 vs pt1

但是这不起作用,changedPixels2总是0,(阈值不适用于图像)

我怎么能纠正这个?

由于

Alessio的

1 个答案:

答案 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
}