|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Усечение пикселей в BitmapData (срочно)
Здравствуйте. Прошу помощи в решении задачи по усечению (заданию прозрачности серым и чёрным пикселям). Прилаживаю картинку, есть динамическай битмап дата, которая образ человека окрашивает в различный цвет кроме градаций серого, не нужны все серые, чёрные и белые пиксели. Каким образром можно битмапу очистить от них. Написал вот это
public function byteArrayToBitmapData(bytes:ByteArray, _canvas:BitmapData, _viewport:BitmapData):void{ var calir:Boolean = false; // прошло ли 5 секунд if (new Date().time-_calibr<5000) { calir = true; } _canvas.lock(); _viewport.lock(); _canvas.setPixels(new Rectangle(0,0, as3kinect.IMG_WIDTH, as3kinect.IMG_HEIGHT), bytes); for ( var i=0;i<=as3kinect.IMG_WIDTH; i++) { for ( var j=0;j<=as3kinect.IMG_HEIGHT; j++) { var pixel:uint = _canvas.getPixel(i,j); if (calir) { _test[pixel] = true; // если идет время калибровки заполняем массив полученніми пикселями } else { if (setmas) { // если плотный массив пуст заполняем его уникальними цветами for (var col:String in _test) { _vect.push(uint(col)); // в результате примерно 50 пикселей trace(col); } setmas = false; } else { var nodep:Boolean = true; // ищем пиксель в калибровочном массиве for each( var color_id:uint in _vect) { if (color_id==pixel) nodep = true; } if (nodep) { _viewport.setPixel32(i,j,0xFFFFFF00); } else { _viewport.setPixel32(i,j,0xFF0000); } } }/**/ } } _viewport.unlock(); _canvas.unlock(); }
__________________
return this... |
|
|||||
PixelBender
На PB такую программу обработки очень просто сделать. Пишете код в PixelBender, экспортируете во флеш, подключаете как фильтр к битмапе или битмап дате.
__________________
Дети не должны знать о своих родителях |
|
|||||
посоветуйте мануал максимально подходящий для такого рода задачи
__________________
return this... |
|
|||||
http://habrahabr.ru/post/70246/
http://habrahabr.ru/post/84396/ http://help.adobe.com/ru_RU/as3/dev/...950BBC223.html Твоя задача вообщем то - изучить работу с PB, научиться внедрять созданный фильтр во флешь. 1 может 2 дня мозгового штурма, и ты станешь на 20% круче. Такая обработка битмапы идеально подходит для учебных целей. Алгоритм пиксельного шейдера не сложный - получаешь цвет пикселя и на основе каких-то переданных констант решаеш - рисовать его или нет.
__________________
Дети не должны знать о своих родителях |
|
|||||
отлично я думаю то что нужно, только не могу найти как получить значение цвета пикселя и обесцветить его. Если не сложно я думаю тут две строчки, поделитесь ними
Добавлено через 10 минут я уже впринцепи разобрался что и как. Внедрил без проблем фильтр. Осталось вычитание пикселей. Большое спасибо, действительно мощный инструмент)
__________________
return this... |
|
|||||
PB фильтры разрабатываются в бесплатной программе Pixel Bender, от-туда же экспортируются в формате .pbj для внедрения во флешь.
Сперва скачайте Pixel Bender. В ней есть разные примеры готовых фильтров. И почитайте статьи по ссылкам, саму документацию на сайте адоби на русском. Получение цвета пикселя производиться как выборка из текстуры на основе текущих координат: dst - цвет пикселя: dst.r - значение красного (0-1) dst.g - значение зелёного (0-1) dst.b - значение синего (0-1) dst.a - прозрачность (0-1) outCoord() - функция для получения x,y координат текущего пикселя. src - битмапа из которой производится выборка
__________________
Дети не должны знать о своих родителях |
|
|||||
нашел как перекрашивать, осталось получить значение цвета пикселя
Добавлено через 1 минуту Цитата:
__________________
return this... |
|
|||||
Найди среднее арифметическое трёх цветовых каналов, если интенсивность красного канала отличается от среднего значения более некоторого порога - рисуешь пиксель, иначе - альфа канал в прозрачность.
__________________
Дети не должны знать о своих родителях |
|
|||||
сделал так, но еще нужно корректировки. Дело в том что там не только крассный, там еще 4-5 цветов, синий, зелённый, желтый. Не могу додумать как опередилить серый это или нет.
__________________
return this... |
|
|||||
блин, читать нужно внимательней))
Цитата:
__________________
return this... |
Часовой пояс GMT +4, время: 05:09. |
|
« Предыдущая тема | Следующая тема » |
|
|