Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 556

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!

Вопрост такой:
Есть рисунок (любой формат). Пусть будет черний. На нем красная точка.
Надо програмно (на Делфи)найти координати точки на рисунке.
Знаю что тут вроде надо с пикселями работать и распознаванием.
КАК ??? С чего начать. Если есть примери реализации поиска - дайте плз ссылку .

Громадное СПС за любой ответ.

hatecows Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: hatecows (статус: Посетитель)
Вопрос отправлен: 2 сентября 2010, 19:53
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Егор

Здравствуйте, hatecows!
Можно картинку отобразить с помощью компонента Image, а точку искать с помощью канвы (Canvas), свойства Pixels, содержащего все точки канвы.
Пример: на форму кладём Image1, метку Label1 кнопку Button1. У компонента Image1 в свойстве Picture задаём имя графического файла. Затем в обработчике нажатия на кнопку пишем код:

procedure TForm1.Button1Click(Sender: TObject);
var
  x, y, c : integer;
begin
  c := clRed;
  for x:=0 to Image1.Width-1 do
    for y:=0 to Image1.Height-1 do
      if Image1.Canvas.Pixels[x,y]=c then
        Label1.Caption := 'x=' + IntToStr(x) + '  y=' + IntToStr(y);
end;

Ну или можно искать не "красную" точку, а "нечёрную" точку:
procedure TForm1.Button1Click(Sender: TObject);
var
  x, y : integer;
begin
  for x:=0 to Image1.Width-1 do
    for y:=0 to Image1.Height-1 do
      if Image1.Canvas.Pixels[x,y]<>clBlack then
        Label1.Caption := 'x=' + IntToStr(x) + '  y=' + IntToStr(y);
end;

Безусловно, есть и другие варианты решения.

Ответ отправил: Егор (статус: 10-ый класс)
Время отправки: 2 сентября 2010, 20:41


Мини-форум вопроса

Всего сообщений: 7; последнее сообщение — 3 сентября 2010, 10:48; участников в обсуждении: 2.
hatecows

hatecows (статус: Посетитель), 2 сентября 2010, 21:09 [#1]:

а если надо еще и размері точки узнать, тоесть сколько вширину в висоту в пикселях ?
Вадим К

Вадим К (статус: Академик), 2 сентября 2010, 21:59 [#2]:

а "точка" "круглая"? а то еще ромбиком окажется...
Галочка "подтверждения прочтения" - вселенское зло.
hatecows

hatecows (статус: Посетитель), 2 сентября 2010, 22:40 [#3]:

да, пусть будет круглая, например от лазера точка.(тоесть наскольео она "толстая" например радіус точки).
но это может быть и красний крест (например), его координити
как-то можна высчитать? типа 4 точки креста. Но с ним то я сам разберусь...как параметры точки посчитать ?
Вадим К

Вадим К (статус: Академик), 2 сентября 2010, 23:25 [#4]:

так-с, вначале у нас была точка, а теперь уже усложняем. Это уже распознавание образов. А это задача другого класса.
Алгоритм в принципе можно сделать, если предположить, что фигура пусть и безформенная, но более-менее круглая.

Цитата (hatecows):

как параметры точки посчитать

то есть? размеры и положение?
Галочка "подтверждения прочтения" - вселенское зло.
hatecows

hatecows (статус: Посетитель), 3 сентября 2010, 10:07 [#5]:

да!
Вадим К

Вадим К (статус: Академик), 3 сентября 2010, 10:20 [#6]:

а если точка будет в виде буквы О или С. тогда что будем считать?

Вопросы нужно задавать правильно. а иначе даже теряется желание придумывать решение.
Галочка "подтверждения прочтения" - вселенское зло.
hatecows

hatecows (статус: Посетитель), 3 сентября 2010, 10:48 [#7]:

Хорошо, щя еще раз. Есть у меня картинка. Например я на стену посветил лазером и сфоткал. Надо найти координати точки на снимке. Но дело в том, что это может быть и не точка, а например насадка на лазер другая- крестик, или пусть ромбик(квадрат). "Точка" будет полностью залита, по центру пропусков нет. Просто если точка будет маленькой - значит обьект на снимке далеко, если большая- близко.
Например при растоянии в 10 см точка будет радиусом в 0,5 см, при большем - 0,1... и т.д. Тоже самое и с крестиком - длини "палок" креста будут менятся. Так как измерить размери "точки"?(или радиус точки, или длину палок креста) А за координати х,у можна брать средний пиксель в любом случае.
Извиняюсь что так туманно...я только учусь...

3 сентября 2010, 11:29: Вопрос перемещён из тематического раздела Delphi » Мультимедийные приложения в раздел Delphi » Графика (2D и 3D) в приложениях модератором Ерёмин А.А.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:34
Выполнено за 0.03 сек.