Actionscript 3: getColorBoundsRect - PullRequest
       1

Actionscript 3: getColorBoundsRect

1 голос
/ 20 июня 2011

У меня есть вопрос.У меня есть BitmapData с 2 красными кружками.Я хочу найти область прямоугольника или каждый круг.Если я использую [B] getColorBoundsRect [/ B], я получаю наименьшую площадь, заключенную в 2 круга.

Как я могу это сделать и получить индивидуальную площадь кругов?ниже приведена диаграмма, которую я создал, чтобы лучше объяснить мой вопрос:http://img831.imageshack.us/img831/3360/sampleja.png

ранее этот вопрос задавался ранее, но не совсем понимаю, как предоставленное решение решило проблему.http://www.kirupa.com/forum/showthread.php?324586-Question-to-getColorBoundsRect

надеюсь, что кто-то здесь может пролить свет на меня.Спасибо миллион.

1 Ответ

2 голосов
/ 20 июня 2011

Для этого есть очень интересный трюк.Во-первых, вам нужно убедиться, что вы получаете только два цвета в ваших BitmapData (порог поможет).После этого вы можете использовать getColorBounds вместе с floodFill , чтобы найти все пятна на изображении.Псевдокод будет выглядеть примерно так:

//Do the following until rect.width is zero.
rect = bmp.getColorBoundsRect(red);
//check the first row of pixels until you find the start of the blob
for(y = rect.y; y < rect.height + rect.y; y++) {
  if(bmp.getPixel(rect.x,y) == red) {
    bmp.floodFill(rect.x,y, green); // paint the blob green
    blobs.push(bmp.getColorBoundsRect(green)); // get the green bounds and push a new blob
    bmp.floodFill(rect.x,y, white); // clear it
    break;
  }
}
...