2つの類似したBitmapDataがあり、それらを比較して、それらが類似しているパーセンテージを取得したいと思います。(BitmapDataのcompare()およびthreshold()メソッドを使用する必要があると思いますが、方法がわかりません)(または、単にgetPixelを使用してピクセルごとにピクセルを比較しますが、パフォーマンスに適しているかどうかはわかりません)
質問する
1199 次
1 に答える
5
2つのビットマップデータオブジェクトの幅と高さが同じであると仮定して、compareとgetVectorを使用する簡単なアプローチを次に示します。
var percentDifference:Number = getBitmapDifference(bitmapData1, bitmapData2);
private function getBitmapDifference(bitmapData1:BitmapData, bitmapData2:BitmapData):Number
{
var bmpDataDif:BitmapData = bitmapData1.compare(bitmapData2) as BitmapData;
if(!bmpDataDif)
return 0;
var differentPixelCount:int = 0;
var pixelVector:Vector.<uint> = bmpDataDif.getVector(bmpDataDif.rect);
var pixelCount:int = pixelVector.length;
for (var i:int = 0; i < pixelCount; i++)
{
if (pixelVector[i] != 0)
differentPixelCount ++;
}
return (differentPixelCount / pixelCount)*100;
}
于 2012-09-01T18:15:56.200 に答える