|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.11.2010, 00:25 | #1 |
Пользователь
Регистрация: 09.06.2010
Сообщений: 11
|
Распознавание цветной точки.
Пишу программку.
Суть проста: на рисунке, изображен предмет. На него светит лазер.(Лазерной указкой). Лазера на картинке не видно. Видно только точку , например красную. Задача в том чтобы найти координаты этой точки. С этим то я справляюсь, если например я в пейнте нарисую красную точку,то я ее спокойно нахожу. Но как только беру фотку - тут приплыли. Во - первых у нее не ровные края. Во - вторых цвет точки на фотке не красный(то есть не 255 0 0 по RGB) а какой то оттенок. Так вот вопрос. Как мне распознать эту долбаную точку, если я нормально не могу цвет определить ? Как мне отфильтровать именно тот участок с точкой? Например на таком рисунке как я прикрепил. Или тут :http://www.instructables.com/id/Nintendo-Zapper-Laser/ |
03.11.2010, 00:38 | #2 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Ищите точки, у которых наибольшее R...
Я имею в виду RGB. |
03.11.2010, 00:43 | #3 |
Пользователь
Регистрация: 09.06.2010
Сообщений: 11
|
Самое большое это 255 будет, но прикол такой, что вместе с 255 красного может быть еще от 0 до 255 зеленого и также синего, то есть еще куча оттенков, которые к красному не имеют отношения.
|
03.11.2010, 01:12 | #4 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Да поймите же вы, что точка, у которой будет максимальный R и минимальные G,B - это и есть красная или красные оттенки...
Чему вас учат ? И где вы тут нашли "приколы" ??? |
03.11.2010, 01:23 | #5 |
Пользователь
Регистрация: 09.06.2010
Сообщений: 11
|
Согласен. Но как мне тогда поступать, например с точкой у которой R 255 G 100 B 100?
Это еще красный или уже нет ? Просто например на той картинке, если посмотреть - четкого ободка нету - она размыта, непонятно до каких пикселей считать. А в центре там вобще светлый оттенок. Спасибо за ответы. Начал думать еще в одном направлении.=) |
03.11.2010, 01:35 | #6 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Вы можете поступить очень просто - выберите на Image, куда вы загрузили вашу картинку, "пограничную" точку (на свой взгляд), посмотрите, какие у нее соотношения между R,G,B и задайте их как условия поиска...
Где R будет больше или равно, а G и B меньше - это и будет ваш лазерный визир... Другого пути нет - ваш мозг гораздо совершеннее любого, даже самого совершенного компьютера. Можно, конечно, составить некую таблицу соответствий, но ведь это опять-таки вы ее создадите и научите компьютер использовать ее... |
03.11.2010, 08:24 | #7 |
БохЪ
Форумчанин
Регистрация: 30.09.2009
Сообщений: 724
|
А как тогда быть если на картинке встречаются предметы еще более красные (R>;G<;B<) чем точка лазера? Нужно еще и знать ее примерную форму (круг), и последовательность цветов (в центре R<чем R краев). И то это не даст 100% вероятности что вы нашли именно вашу лазерную точку.
В планах порабощение вселенной...
|
03.11.2010, 19:37 | #8 |
Пользователь
Регистрация: 09.06.2010
Сообщений: 11
|
Вот кусок кода:
procedure TForm1.Button1Click(Sender: TObject); var x, y, i,j : integer; begin for I := 0 to Image1.Width - 1 do for J := 0 to Image1.Height - 1 do begin if (GetRValue(Image1.Canvas.Pixels[i, j]) > 220) and (GetGValue(Image1.Canvas.Pixels[i, j]) < 150) and (GetBValue(Image1.Canvas.Pixels[i, j]) < 150) then Image1.Canvas.Pixels[i, j] := RGB(GetRValue(Image1.Canvas.Pixels[i, j]), 0, 0) else Image1.Canvas.Pixels[i, j] := RGB(0, 0, 0); end; end; В принципе самый простой фильтр. И очень даже нормально работает. Но в результате получается размытая красная область. Как мне тогда найти координаты центра этой обрасти (круга)? У нас принято оформлять код специальным тэгом - при помощи кнопочки "#". Только... И не значком #. И не РНР-кодом. И не значком цитаты. И не собственными "ручками". Рекомендую. Помимо общих правил форума есть и дополнения к ним в каждом разделе... Модератор Последний раз редактировалось mihali4; 03.11.2010 в 19:44. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Си найти минимальный путь от точки до точки | dikr | Помощь студентам | 4 | 09.05.2010 11:58 |
Имеются координаты точки. Как проверить какого цвета соседние точки на форме? | Rin | Мультимедиа в Delphi | 2 | 10.11.2009 22:47 |
даны две точки. организовать движение из точки А в точку Б окружности! | Wi1D | Помощь студентам | 6 | 23.05.2009 19:55 |
Отбражение чисел - точки, это точки, а не запятые, обозначающие дробную часть | Дикий | Помощь студентам | 7 | 12.05.2008 17:57 |
Цветной текст | ERASERROR | Общие вопросы Delphi | 4 | 25.01.2008 21:04 |