![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Rian |
![]()
Сообщение
#1
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 394 Пол: Мужской Репутация: ![]() ![]() ![]() |
сдрасте экспериментирую с распознаванием образов...
вобщем на картинке есть фигура (условно элипс)синего цвета надо определить границы этой фигуры (верх-низ тд) я нахожу любой синий пиксел и рекурсивно обхожу все соседние, перерисовывая в красный каждый проверенный вот ток с возвратом результата что не так подскажите где меня заклинило))
ps. похоже перегнул... попробую делать проверку для каждой грани отдельной функцией с частичной заменой цвета а не полной Сообщение отредактировано: feniks25 - 6.01.2010 22:24 -------------------- Objective-C, Unity3d
|
![]() ![]() |
Lapp |
![]()
Сообщение
#2
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
А что эта тема делает в Задачах?
Перенести в Delphi? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Rian |
![]()
Сообщение
#3
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 394 Пол: Мужской Репутация: ![]() ![]() ![]() |
Перенести а Delfi? ой... может быть, хотя картинку можно воспринимать как массив хотя кажется скоро доделаю проблема тут:
и вот тут (для нижней границы проверяю через (<)
-------------------- Objective-C, Unity3d
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Непонятны 2 вещи:
во-первых, с чего ты решил, что для определения "синий цвет" достаточно, чтобы GetBValue было равно 255? У белого оно тоже 255. Сравнивай с синим цветом: if image.Canvas.Pixels[x,y]=clBlue then ... А во-вторых, для того, чтобы определить границы эллипса, недостаточно проверить ТОЛЬКО точки, находящиеся строго вверху, внизу, слева и справа. Надо еще проверять и угловые: выше-левее, ниже-левее, выше-правее, ниже-правее. Вот это, к примеру, выдает правильные границы эллипса: procedure analiz_pict(const image:timage); |
Rian |
![]()
Сообщение
#5
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 394 Пол: Мужской Репутация: ![]() ![]() ![]() |
респект!!! красиво...)
ну мне достаточно проверить только синий канал потому что я его уже отфильтровал (тип как на картинке) и возможно он не обязательно будет чистым синим (сам еще не знаю) вопрос для чего проверять диагонали 159 753? если проверять крестом то для 5 проверяются 4268 для 4-12... 123 456 789 или например по диоганалям впринципе можно за границы области выйти 000х 00х1 0х11 х111 я результат более менее подходящий получил... выдает такое же самое только почему все цифры на 1 меньше реальных? canvas же считает от 1 а не от 0? почему так? Эскизы прикрепленных изображений ![]() -------------------- Objective-C, Unity3d
|
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата canvas же считает от 1 а не от 0? С чего бы? Всегда с 0 индексация была...Цитата для чего проверять диагонали 159 753? если проверять крестом то для 5 проверяются 4268 для 4-12... Для того, чтобы найти фигуру, надо проверять всех ближайших соседей точки. |
Rian |
![]()
Сообщение
#7
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 394 Пол: Мужской Репутация: ![]() ![]() ![]() |
С чего бы? Всегда с 0 индексация была... Для того, чтобы найти фигуру, надо проверять всех ближайших соседей точки. мда с 0... засчитался ![]() но диагонали мне не подойдут: _111___ 11111___ 11111___ _____1111 _____1111 вариант маловероятный, но возможный -------------------- Objective-C, Unity3d
|
![]() ![]() |
![]() |
Текстовая версия | 12.07.2025 16:20 |