2011-02-27 88 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