使用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的
答案 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
}