19.11.2012, 17:20 | #1 (permalink) |
Новичок
Регистрация: 19.11.2012
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Графика в Delphi
Может есть алгоритмы попроще, а то ощушение, что удаляю гланды не через то отверстие(( |
19.11.2012, 17:20 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
На нашем форуме нашлись похожие обсуждения Графика PascalABC, графика |
19.11.2012, 20:50 | #3 (permalink) |
Новичок
Регистрация: 19.11.2012
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Спасибо за совет, но:
1. В этой строке, может быть и черные цвета, от фигуры, расположенной дальше по оси Х. 2.Я прохожу масси во стоблцам, а Вы, если я правильно понял, предлогаете по строкам. Но тогда если мы рассмотрим представленные на рисунке фигуры, повернув их на 90 градусов, то опять получим ту же самую проблему. |
19.11.2012, 21:39 | #4 (permalink) |
Member
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
|
Это что у вас распознавание образов о_О
1) Что такое x,y (min, max) как расположены координаты. 2) Как вы считываете картинку? что, строка пикселей это столбец массива? 1. Ставьте правильно условие(т.к. вы написали относительно данной картинки)... Тогда надо анализировать каждый пиксель... если он - 1 и есть сосед 1, то это все та же фигура. И соответственно высчитывать max, min для этой фигуры.(эти координаты добавляем в какой-то массив т.е. будет массив массивов. где ключ - номер фигуры). Как только нету соседа (тоже 1) то это либо новая фигура, либо больше их нету. На когда нужна задача? |
19.11.2012, 22:23 | #5 (permalink) |
Новичок
Регистрация: 19.11.2012
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
1. xmin,xmax - это крайний левый и крайний правый пиксель фигуры.
2.Нет, строка картинки=страка массива. Извиняюсь,что не так выразился. Просто цикл у меня идет по столбцам, но можно и по строкам. Не вижу принципиальной разницы. Про сравнение и поиск соседнего пикселя я уже думал. Вот мы анализируем первую строку с черными пикселями. Назначаем ключ 1 и до точки 2 у всех сосед есть. Потом идет разрыв в строке, и у точки 3 соседа с ключем 1 нет. На этой проблеме я и застрял. Сроки не важны. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
21.11.2012, 20:02 | #9 (permalink) |
Новичок
Регистрация: 19.11.2012
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Вобщем, я алгоритм придумал, но он настолько извращенный и индийский, что мне даже не много стыдно.
в цикле находим первую точку черную. вызываем функцию, которая считает хмах, хmin и ymax,ymin первой попавшейся фигуры (эту функцию я так же приудмал, и она так же корява, как и этот алгоритм). Далее вызывае функцию, которая в цикле будет проходить от xmin до хmax и ymin и ymaх. В нем обнуляем все точки с черным цветом(заоодно и площадь фигуры можно посчитать). Далее продолжаем первый цикл, до следующей фигуры. З.Ы. прошу сильно не пинать,знаю что мысль ужасная. Так что тема актуальна. |
21.11.2012, 22:12 | #10 (permalink) |
VIP user
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
|
Можно сделать так, что бы он двигался от первого пикселя враво, как только находит точку черную записывает координаты, далее двигается дальше, как только обнаружил белую точку, то записывает координаты предыдущей позиции, и начинает считывать след. строку. и так далее, потом просто вбить формулы площади и все=)
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|