Comparar pixels de imágenes en Actionscript 3.0 con threshold

Etiquetas: BitmapData clone threshold

La función threshold permite hacer comparaciones pixel a pixel en una imagen. Por ejemplo, podemos separar todos los pixels mayores de un color de una imagen, y obtener otra imagen con esos pixels. La función threshold tiene 5 parámetros obligatorios (y varios opcionales):

threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint)

-sourceBitmapData: la imagen que vamos a utilizar

-sourceRect: rectángulo que define el area de la imagen de origen que vamos a utilizar

-destPoint: punto de la imagen de destino que corresponde a la esquina superior izquierda del rectángulo

-operation: operación que vamos a utilizar

-threshold: valor con el que comparamos cada pixel

Por ejemplo, si queremos separar los pixels mayores de 0xFFCCCCCC de los menores en una imagen, podemos utilizar:

  1.  
  2. img1.threshold(img1, new Rectangle(0, 0, 350, 242), new Point(0, 0), ">", 0xFFCCCCCC);
  3. img2.threshold(img2, new Rectangle(0, 0, 350, 242), new Point(0, 0), "<=", 0xFFCCCCCC);

El código completo y los fuentes:

package 
{
 
	import flash.display.BitmapData;
	import flash.display.*;
	import flash.events.Event;
	import flash.filters.*;
	import flash.geom.*;
	import flash.media.*;
	import flash.filters.ColorMatrixFilter;
 
	public class EjemploTH extends Sprite 
	{
 
		var count:uint = 0;
		var img:BitmapData
		var copy:BitmapData
 
		public function EjemploTH()
		{
			img = new Imagen(350, 242);
			separar();
		}
 
		private function separar():void
		{
			var img1:BitmapData = img.clone();
			var img2:BitmapData = img.clone();
			img1.threshold(img1, new Rectangle(0, 0, 350, 242), new Point(0, 0), ">", 0xFFCCCCCC);
			img2.threshold(img2, new Rectangle(0, 0, 350, 242), new Point(0, 0), "<=", 0xFFCCCCCC);
			var bm1:Bitmap = new Bitmap(img1)
			var bm2:Bitmap = new Bitmap(img2)
			bm2.x = 350;
			addChild(bm1);
			addChild(bm2);
		}
	}
 
}

Comentarios:
Iván dijo:
Estos ejercicios tienen una pinta estupenda, esto de comparar pixels va a dar mucho juego.
esedeerre dijo:
Pues si, la verdad es que es la leche. Se me ocurre por ejemplo que se podría grabar a alguien con una camiseta blanca y después cambiar el color de la camiseta en el video solo por programación.
Zunga dijo:
Hola,queria saber si hay alguna forma de tomar un grupo de pixeles y dependiendo del numero de pixeles q cambien de color que se genere una accion que ya programe(me queda solo ese espacio en blanco q no se q hacer :S) alguna idea alguien? si se les ocurre la solucion mandenla a tianchuvarsky@hotmail.com, muchas gracias gente :D (con esto apruebo el ultimo año de secundaria :D )
Dejar un comentario:
Tu nombre (obligatorio):

E-mail (obligatorio, no se mostrará):

Web: