![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 06.10.2007
Сообщений: 32
|
![]()
Помогите написать код на С++ или Делфи (оба борландовские) для размывания картинки TBitmap, с указанием коэфициента размывания.
|
![]() |
![]() |
![]() |
#2 |
Редкий тунеядец
Форумчанин
Регистрация: 29.10.2006
Сообщений: 595
|
![]()
В общем-то размытие - это уменшение резкости и еконтраста между близкими точками.. надо видимо сделать что-то вроде:
берём первый пиксель первого ряда и второй пиксель... равниваем цвета... смотрим разницу... и в зависимости от степени сглаживаниа их между собой уравниваем... например у нас стоит чисто белый пиксель и чисто черный... FFFFFF 000000 делаим белый светло серым а черный светло темно серым... F0F0F0 101010 т.о. два пикселя уже сглажены... что б было поресче можно сделать через буфер чтоб брало в двухмерный динамический массив через пиксел всю картинку тогда мы просто берем за раз картинку в массив и циклом компарируем все элементы по очереди и в этом же массиве их перезаписуем на новые,... затем массив загружаем на канву.... при необходимости в файл.... Соответственно степень сглаживания будет определять относительную величину уравнивания... т.е. при минимально сглаживании будет сцета слегка изменяться а прни максимальном будут практически уравниваться.... Можно сравнивать блоками по несколько пикселей например 2*2 или 3*3 при этом можно будет в разы увеличивать предельную степень сглаживания.... Возится с кодом не буду... щаз просто лень... |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 06.10.2007
Сообщений: 32
|
![]()
Ну может кому не лень напишите именно код, плиззззз...
|
![]() |
![]() |
![]() |
#4 | |
Редкий тунеядец
Форумчанин
Регистрация: 29.10.2006
Сообщений: 595
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 21.06.2007
Сообщений: 55
|
![]()
динамич массив можно создать так
const pi=3.14; var M : array of real; n,i: integer; begin randomize; razmer:=random(100);{задание размерности массива или любая зависимость по которой необходимо создавать размер массива} SetLength(V,razmer); loskzad:=12; r:=2; for i:=0 to razmer-1 do begin repeat V[i]:=pi*r*r*losk; {вывод массива в таблицу} ttable.cells[1,i+1]:=floattostr(V[i]); losk:=Losk+1; until losk>=loskzad; end; end; ![]() www.nnm.ru ۩۞۩___Смысл заключается,_______________۩۞۩ ۩۞۩___Лишь в величине вашего разума____.۩۞۩ ۩۞۩__♣™_Diller_™♣__۩۞۩ |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 06.10.2007
Сообщений: 32
|
![]()
//вот мой код. писал давненько. выдает просто черную картинку.
int pow=50; for(int i=0;i<=Image1->Height;i++){ for(int j=0;j<=Image1->Width;j++){ Image1->Picture->Bitmap->Canvas->Pixels[i][j]=RGB( GetRValue(Image1->Picture->Bitmap->Canvas->Pixels[i][j])*(pow/100)+GetRValue(Image1->Picture->Bitmap->Canvas->Pixels[i][j+1])*((100-pow)/100), GetGValue(Image1->Picture->Bitmap->Canvas->Pixels[i][j])*(pow/100)+GetGValue(Image1->Picture->Bitmap->Canvas->Pixels[i][j+1])*((100-pow)/100), GetBValue(Image1->Picture->Bitmap->Canvas->Pixels[i][j])*(pow/100)+GetBValue(Image1->Picture->Bitmap->Canvas->Pixels[i][j+1])*((100-pow)/100)); } } |
![]() |
![]() |
![]() |
#7 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
Быстрее будет прогуглить на тему gaussian blur delphi
пыщь
|
![]() |
![]() |
![]() |
#8 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
См. в общем разделе тему "Процедуры по обработке изображений"
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Картинки... | Altera | Свободное общение | 5 | 24.07.2008 05:41 |
Картинки | Rio309 | Мультимедиа в Delphi | 4 | 10.02.2008 00:36 |
Картинки и CMS | kirill555 | PHP | 3 | 10.12.2007 02:40 |
БД и картинки | Constellation | БД в Delphi | 2 | 06.12.2007 15:33 |
Картинки | Акашаев Нурлан | Помощь студентам | 7 | 25.10.2007 20:46 |