используйте сравните , чтобы создать разницу между ними, а затем используйте treshold , чтобы извлечь интересующие вас детали.
edit: на самом деле это довольно просто. хитрость заключается в применении порогового значения несколько раз на канал с использованием параметра маски (в противном случае сравнение имеет мало смысла, поскольку 0x010000
(который почти черный) считается большим, чем 0x0000FF
(который не является черным). вот как:
var dif:BitmapData;//your original bitmapdata
var mask:BitmapData = new BitmapData(dif.width, dif.height, true, 0);
const threshold:uint = 0x20;
for (var i:int = 0; i < 3; i++)
mask.threshold(dif, dif.rect, new Point(), ">", threshold << (i * 8), 0xFF000000, 0xFF << (i * 8));
это создает прозрачную маску. затем пороговое значение применяется ко всем трем каналам, устанавливая альфа-канал на полностью непрозрачный, где значение каналов превышает пороговое значение (вы можете уменьшить его).
Вы можете изолировать объект переднего плана («парень перед веб-камерой»), скопировав альфа-канал из маски в текущее видеоизображение.