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(我必须调整它),则提交一个动作。

问题是我需要超过 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,(阈值未应用于图像)

我该如何纠正这个?

谢谢

阿莱西奥

4

1 回答 1

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
}
于 2011-02-27T13:01:54.720 回答