![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| DarkLight |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 10.1.2004 Где: София Репутация: нет Всего: нет |
Здравствуйте
У меня ест следний проблем. Мне надо загрузти .bmp каторое надо изпользуват как heightmap. Ето чорно-белое изображение, и самая светлий пиксел - ето самая високая точка поверхности, а самая темная - самая ниская Мнен нужда опредлит в програме самой большой и самой маленкой висотой, но програма никагда не работает как надо и я не могу понять почему. Лудче всего работала какда я проста записивал стойност цвета пиксела div 29 000.... но надо же параметрам определит интервал висоти поверхностти Сейчаш я польуя следущий код:
А первий код, которий работал лудче всех (но от неотговаревает стандарту файла, его надо немного изменит):
Первий код намного сложнее потому что там ест 4 параметра - максималная висота, минимальная, flip (високии становятся нискии и наоборот) и Skip - т.е. не проверят каждий пиксел а пропускат определенноя количество |
||||
|
|||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
DarkLight Честно говоря, читать твою орфографию очень сложно. Если ты прикалываешься, то это ИМХО перебор; если нет, то сделай одолжение, проверь текст с помощьб MSWord. Я когда дочитал пост до конца, забыл, что было в начале.
|
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
December, МС-вордом - болгарский текст?
// угорает -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| Kesh |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 4 Всего: 54 |
Представь себе, что у тебя есть TImage по имени HeightMap, т.е.
Есть максимальная и минимальная высота МaxHeight и MinHeight соответсвенно, т.е.
Есть признак инвертирования высот
Есть некоторое условие Skip, которое принимает значение true, если надо проверять пиксел, и false иначе. Тогда процедура создания текстового файла будет выглядеть примено так...
Теперь пояснения... AssignFile и RewriteFile сам должен знать что такое... Diff := (MaxHeight-MinHeight)/$FF; относительная высота, т.е. высота приходящаяся на каждую единицу интенсивности цвета ($FF = 255). Дальше в цикле пробегаешь по Пикселам и присваиваешь переменной H - Интенсивность серого цвета, помноженную на относительную высоту.... H := (Canvas.Pixels[j,i] mod $100)*Diff или, если надо инвертировать поле высот ($FF-(Canvas.Pixels[j,i] mod $100))*Diff Вот и все... Если возникнут вопросы по коду - пиши... P.S. И выучи русский язык... -------------------- ![]() |
||||||||
|
|||||||||
| DarkLight |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 10.1.2004 Где: София Репутация: нет Всего: нет |
Ну если скажеш откуда найти програму орфографической проверки для Word я буду писать в Word, редактируват и потом copy&paste
x77 у меня проблем с болгоским текстам нет, но мой руский - я ето очен хорошо знаю, ужасний |
|||
|
||||
| Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 4 Всего: 54 |
December Парень из оказывается из СОФИИ...
DarkLight Сорри за P.S. -------------------- ![]() |
|||
|
||||
| Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 4 Всего: 54 |
У тебя ошибки в тексте были...
Индексация массива пикселей начинается с нуля... Индексы идет так Pixels[Номер столбца, Номер строки]... -------------------- ![]() |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
DarkLight,
во-первых, "светлость" точки не определяется значением TColor. строго говоря, цвета FF0000 и 0000FF имеют одинаковую "светлость", а вот по твоей логике - первый гораздо светлее другого. если картинка чёрно-белая, (видимо, имеется в виду, что она greyscale), то значения всех трёх составляющих RGB будут одинаковы. например, 010101, 0F0F0F, FFFFFF и т.д. следовательно, разброс тона будет от 0 до 255 (т.к. для получения картинки в серых тонах, значения всех трёх составляющих RGB меняются синхронно). т.е., тебе нужно взять любую из них и проверить от 0 до FF. во-вторых, для подобной обработки лучше использовать scanline в-третьих, TCanvas - это массив от (0 до Width-1) x (0 до Height - 1), а у тебя нумерация с 1. в-четвёртых, для TCanvas сначала указывается абсцисса, а потом ордината, т.е. это массив вида [X, Y], а у тебя - наоборот. в-пятый, "белый пиксел" - это совсем не 255,255,255, т.е. не $FFFFFF. цвет хранится, как двойное слово, вида $02FFFFFF, где первый байт определяет, из какой палитры будет браться значение цвета. в-общем, вот код:
сохранение в файл делать не буду, это просто, и что такое минимальная - максимальная высота я не понял. картинки? точки? (т.е. её светлость?) -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
во блин, пока писал - тут уже целый сейшн
-------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 4 Всего: 54 |
x77 Ага, скоро Привет Катрин будет
P.S. Сорри за offtopic -------------------- ![]() |
|||
|
||||
| DarkLight |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 10.1.2004 Где: София Репутация: нет Всего: нет |
kesh в первих - я знаю что лудче пользувать scanline, но я не знал точна как. Спосибо для код.
Для минимальная и максимальнай висотой - я имел ввиду что потребительъ может сказат: Самая ниская точка: 100 (т.е. черний цвет) Самая високая: 1500 (т.е. белий цвет) И все числа должи бит между 100 и 1500 Сохранения в файл легко, я даже не знаю почиму пользую Memo, но ето пока напишу правилний алгоритм, потом уже напишу с Assign(), Writeln() и Close() Очен спосибо, я завтро побробую код |
|||
|
||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
DarkLight Извини, я поленился залезть в профайл. Установи себе русскую версию MSWord, в ней по дефаулту есть проверка синтаксиса (F7).
|
|||
|
||||
| DarkLight |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 10.1.2004 Где: София Репутация: нет Всего: нет |
Програма работает
Еще раз спосибо, kesh December а откуде мне взят рускую версию Word-а? И можеш мне сказат какой небут англо-руский словар... |
|||
|
||||
| Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 4 Всего: 54 |
DarkLight Всегда рад помочь...
-------------------- ![]() |
|||
|
||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
DarkLightЯ пользуюсь Lingvo - ИМХО самый удобный.
Русскую версию Вёрда - у русских друзей. Если хорошо говоришь по-английски, то не стесняйся, спрашивай по-английски. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |