Форум программистов, компьютерный форум, киберфорум
Delphi: Графика, звук, видео
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
90 / 3 / 0
Регистрация: 05.03.2013
Сообщений: 36

Поиск изображения в изображении

17.12.2015, 13:18. Показов 1732. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прежде чем создать тему, очень много полистал тем с разных форумов, но ответа для себя так и не нашел.
Попробую подробно объяснить что мне нужно и как я это делаю.

Задача: С загруженного изображения ( ) получить/найти изображение опорной точки/репера размером 170 на 170 их три на фото (), как пример в архиве лежат файлы k1.bmp - k6.bmp и выделить середину этого крестика.

Как я хотел это реализовать. Я попробовал каждый файл k*.bmp перевести в цвета белые и красные. То есть, где цвет темнее - перекрашиваем в белый, где светлее - в красный. Далее считаем сколько красных и сколько белых пикселей. Для всех областей k*.bmp это было Красного 2400-4200, Белого 2500-2700 ()

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
for x:=0 to p.Width do
    for y:=0 to p.Height do
    begin
    c:=p.Canvas.Pixels[x,y];
    r := GetRValue(c);
    g := GetGValue(c);
    b := GetBValue(c);
    if ((r)>180) and ((g)>170) and ((r)>170) then
      begin
      p.Canvas.Pixels[x,y]:=clRed;
      red := red + 1;
      end
        else
      begin
      p.Canvas.Pixels[x,y]:=clWhite;
      white := white +1;
      end;
    end;
Далее я брал фото и начинал в цикле проходить от 0 до 1280 по x и от 0 до 720 по выделяя область 170 на 170 и считая пиксели, если попадало в нужный диапазон, то значит нашли, иначе ищем дальше. Но у меня все зависало, может из-за большого кол-ва операций.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
  for x:=0 to p.Width do
    for y:=0 to p.Height do
      begin
       c:=p.Canvas.Pixels[x,y];
       r := GetRValue(c);
       g := GetGValue(c);
       b := GetBValue(c);
       if ((r)>180) and ((g)>170) and ((r)>170) then
         p.Canvas.Pixels[x,y]:=clRed
              else
         p.Canvas.Pixels[x,y]:=clWhite;
      end;
 
    for x:=0 to p.Width do
      for y:=0 to p.Height do
        begin
         p1.Canvas.CopyRect(Rect(0, 0, 170, 170), p.canvas, Rect(x, y, x+170, y+170));
             for xw:=0 to p1.Width do
              for yh:=0 to p1.Height do
                 begin
                  c:=p1.Canvas.Pixels[xw,yh];
                  r := GetRValue(c);
                  g := GetGValue(c);
                  b := GetBValue(c);
                  if ((r)>180) and ((g)>170) and ((r)>170) then
                    begin
                     red := red + 1;
                    end
                    else
                    begin
                     white := white +1;
                    end;
                  end;
        if (red>2400) and (red<4200) and (white>25000) and (white<27000) then
            image1.Picture.Bitmap.Assign(p1);
        end;
Так же была идея выделять кругом, это область, но не знаю как, было бы намного легче. Смог только нарисовать этот круг в области 170 на 170
Delphi
1
p.Canvas.Arc(0,0,170,160,100,100,100,100);

Вообщем, может кто написать как это проще реализовать. Поиск k*.bmp в src.bmp и выделить это наглядно, допустим кругом и указать центр этого круга.
Вложения
Тип файла: zip src.zip (3.47 Мб, 7 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.12.2015, 13:18
Ответы с готовыми решениями:

Многократный поиск изображения в изображении
Данная программа ищет только один раз: КлиК Как сделать так, чтобы программа находила поочередно все вхождения, если их 2 и более?

Поиск элемента на изображении
Задача такова: программа создаёт скриншот экрана. Имея некоторое изображение.bmp, нам надо найти координаты этого изображения.bmp на...

Поиск позиции вставки буквы на изображении
Здравствуйте! Есть программа, которая выводит текст на картинку. Позицию для каждой буквы она ищет по цвет фона. Подскажите,...

2
9 / 9 / 5
Регистрация: 21.09.2015
Сообщений: 103
17.12.2015, 14:02
Цитата Сообщение от mars2107 Посмотреть сообщение
Вообщем, может кто написать как это проще реализовать. Поиск k*.bmp в src.bmp и выделить это наглядно, допустим кругом и указать центр этого круга.
В интернете полно информации. Гугли по запросу "Template matching", а так же почитай про библиотеку OpenCV.
0
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
17.12.2015, 15:06
или NOMAD BoT
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.12.2015, 15:06
Помогаю со студенческими работами здесь

НЕ ПОНИМАЮ. Поиск координаты пикселя на изображении по его цвету
Есть изображение. На нем нарисована черная линия. Нужно по вертикали зеркально отобразить эту линию относительно ее конца. Просто...

Поиск изображения в изображении
Необходимо вычислить координаты изображения Б в изображении А. Изображение А - картинка в формате JPG. Изображение Б - картинка в формате...

Поиск изображения в изображении
имеется два изображения *.bmp. Первое(1.bmp, width==480, height==640), второе(2.bmp, width==24, height==20). Вообщем мне надо найти...

Поиск изображения в изображении
Всем привет. Вопрос уже много раз обсуждался. Необходимо найти в скрине экрана сохраненный в файле маленький рисунок и переместить...

Поиск изображения в изображении
Привет. Допустим у меня есть изображение в битмапе, и мне нужно его найти в сделанном программой скриншоте экрана, и если его нашло вернуть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru