Comparar pixels de imágenes en Actionscript 3.0 con threshold

Comparar pixels de imágenes en Actionscript 3.0 con threshold

Etiquetas: BitmapData clone threshold

Imagen en reemplazo de flash

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:


  1. package 
  2. {
  3.  
  4. 	import flash.display.BitmapData;
  5. 	import flash.display.*;
  6. 	import flash.events.Event;
  7. 	import flash.filters.*;
  8. 	import flash.geom.*;
  9. 	import flash.media.*;
  10. 	import flash.filters.ColorMatrixFilter;
  11.  
  12. 	public class EjemploTH extends Sprite 
  13. 	{
  14.  
  15. 		var count:uint = 0;
  16. 		var img:BitmapData
  17. 		var copy:BitmapData
  18.  
  19. 		public function EjemploTH()
  20. 		{
  21. 			img = new Imagen(350, 242);
  22. 			separar();
  23. 		}
  24.  
  25. 		private function separar():void
  26. 		{
  27. 			var img1:BitmapData = img.clone();
  28. 			var img2:BitmapData = img.clone();
  29. 			img1.threshold(img1, new Rectangle(0, 0, 350, 242), new Point(0, 0), ">", 0xFFCCCCCC);
  30. 			img2.threshold(img2, new Rectangle(0, 0, 350, 242), new Point(0, 0), "<=", 0xFFCCCCCC);
  31. 			var bm1:Bitmap = new Bitmap(img1)
  32. 			var bm2:Bitmap = new Bitmap(img2)
  33. 			bm2.x = 350;
  34. 			addChild(bm1);
  35. 			addChild(bm2);
  36. 		}
  37. 	}
  38.  
  39. }

Descargar archivos

Comentarios
    • Autor
    • Iván
    Estos ejercicios tienen una pinta estupenda, esto de comparar pixels va a dar mucho juego.
    • Autor
    • esedeerre
    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.
    • Autor
    • Zunga
    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:

Comentario: