Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/29: Рейтинг темы: голосов - 29, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 15.09.2022
Сообщений: 10

Поиск картинки в картинке

15.09.2022, 17:58. Показов 6571. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть скрипт (функция) на питоне поиска маленькой картинки внутри другой большой картинки, нужно помочь найти с ее помочью внутри большой картинки несколько маленьких картинок (с этим в принципе у меня проблем нет) и расписать порядок в каком они находятся внутри большой картинки (как реализовывать мне понятно, но хочется красивую реализацию). вообщем задача совершенно простейшая
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.09.2022, 17:58
Ответы с готовыми решениями:

Поиск определенного объекта на картинке
Есть, к примеру скрин с игры. Нужно чтобы программа находила, например, вкладку чат и выдавала мне её координаты на картинке. Подскажите...

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

Поиск картинки в другой картинке
Здравствуйте! Задача такая: нужно найти картинку на большой картинке. Пока искал ответ на этот вопрос наткнулся на такие вот 2...

10
5519 / 2872 / 571
Регистрация: 07.11.2019
Сообщений: 4,766
15.09.2022, 21:25
DmitryADM, Используй OpenCV.
0
0 / 0 / 0
Регистрация: 15.09.2022
Сообщений: 10
15.09.2022, 21:32  [ТС]
да естественно, я ее использую и у меня вообще нет проблемы с нахождением картинки в картинке. у меня проблема обработать одновременно несколько массивов одновременно.
0
5519 / 2872 / 571
Регистрация: 07.11.2019
Сообщений: 4,766
15.09.2022, 21:42
DmitryADM, пример нужно видеть, что значит несколько массивов одновременно?
Несколько образцов или несколько одинаковых объектов или несколько картинок?
0
0 / 0 / 0
Регистрация: 15.09.2022
Сообщений: 10
15.09.2022, 21:58  [ТС]
первый раз пишу тут. не знаю можно ли писать что пытаюсь взломать простейшую капчу. но на этом собственно изучаю питон.
умею находить маленькую картинку(где любая из цирф от 1 до 9) в большой картинке-капче.
получаю скриптом координату крайне левую-верхнюю точку вхождения.
записываю в массив(список) все эти координаты для каждой из 9 цифр, поэтому получу 9 таких массивов
собственно мой вопрос(и мой затык) в том как потом отсортировать по возрастанию объединенный массив из этих 9 массивов, чтобы например скрипт помнил что если на пером месте стоят координаты из 1го массива, значит на 1м месте в капче стоит цифра 1. и т.д. ,те. в итоге правильно разгадать капчу.
вот сам мой скрипт

import cv2
import numpy as np
coordinate_array = []
def find_target_picture_in_big_picture(targe t_picture, big_picture):
# программа ищет заданное изображение в большой картинке
# при обнаружении на выход выводятся координаты (по оси x) верхней левой точки вхождения
# Загрузить исходное изображение и шаблон изображения для поиска
img = cv2.imread(big_picture,1)
# OpenCV обрабатывает исходное изображение и создает версию в оттенках серого
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# Загрузить шаблон изображения для поиска # Записать размер шаблона изображения
template = cv2.imread(target_picture,0)
# Обработка и поиск совпадений в изображениях в оттенках серого. Затем используйте те же координаты для восстановления и вывода в исходное изображение.
# cv2.matchTemplate(image, templ, method[, result])
res = cv2.matchTemplate (img_gray, template, cv2.TM_CCOEFF_NORMED) #TM_CCOEFF_NORMED - это стандартное сопоставление коэффициентов корреляции, общий метод сопоставления с шаблоном сопоставления
# Установить порог
threshold = 0.95
# Выходное разрешение больше 70%
loc = np.where( res >= threshold)
# Используйте координаты в изображении в градациях серого, чтобы отметить исходное изображение RGB
# coordinate_array = []
for pt in zip(*loc[::-1]):
cv2.rectangle(img, pt, (pt[0], pt[1]), (7,249,151), 2)
# print(pt[0])
# type(pt[0])
coordinate_array.append(pt[0])
# Показать изображение
# for i in coordinate_array:
# print(i)
cv2.imshow('matchTemplate.jpg', img)
# сохранить изображение
cv2.imwrite('matchTemplate.jpg', img)
return coordinate_array
cv2.waitKey(0)
# return img
find_target_picture_in_big_picture('9.jp g', '1196591.jpg')
coordinate_array_without_dubles = list(set(coordinate_array))
coordinate_array_without_dubles.sort()
for i in coordinate_array_without_dubles:
print(i)
#print()
find_target_picture_in_big_picture('1.jp g', '1196591.jpg')
coordinate_array_without_dubles = list(set(coordinate_array))
coordinate_array_without_dubles.sort()
for i in coordinate_array_without_dubles:
print(i)
#print (pt[0])
# Показать изображение
#cv2.imshow('matchTemplate.jpg', img)

# сохранить изображение
#cv2.imwrite('matchTemplate.jpg', img)
#cv2.waitKey(0)
Вложения
Тип файла: rar test.rar (89.6 Кб, 34 просмотров)
0
5519 / 2872 / 571
Регистрация: 07.11.2019
Сообщений: 4,766
15.09.2022, 22:37
DmitryADM, вот смотри: у тебя в конечном итоге есть массив названий шаблонов, от 0 до 9, которые в цикле ищутся на большой картинке [0,1,2,3...9]. Есть массив координат для каждой цифры [[x1, y1],[x2,y2], [NaN, NaN],[x4,y4]...]
Далее делаешь np.argsort массива координат, по x (axis=0 или 1, разберись) и получаешь индексы. Эти индексы применяешь к первому массиву и получаешь числа в нужном порядке.
Про дубли: лучше делать threshold, а затем connectedcomponentwhithstats, он выдает центроиды и боксы сразу и без необходимости удалять дубли.
Про Jpg: jpg - формат с потерями, не используй его, используй png. Если из большого jpg кропнуть кусочек и сохранить в jpg, то он не совпадет попиксельно с тем что есть на большой картинке.

Добавлено через 3 минуты
Можно, конечно, еще тессеракт задействовать, если картинку инвертировать предварительно...
1
0 / 0 / 0
Регистрация: 15.09.2022
Сообщений: 10
15.09.2022, 22:48  [ТС]
нет тессеракт мне не интересно, я эту простую капчу взял для начала, с прицелом на будущее так же распознавать чисто графическую капчу типа такой как на вложении:
Миниатюры
Поиск картинки в картинке  
0
0 / 0 / 0
Регистрация: 15.09.2022
Сообщений: 10
15.09.2022, 23:33  [ТС]
u235, спасибо большое за помощь, я пишу скрипт по заработку на просмотре рекламы (фактически на разгадывании капчи в конце). как допишу поделюсь с тобой в качестве благодарности.
0
5519 / 2872 / 571
Регистрация: 07.11.2019
Сообщений: 4,766
16.09.2022, 07:12
Лучший ответ Сообщение было отмечено DmitryADM как решение

Решение

DmitryADM, собственно как-то так:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import cv2
big_picture=cv2.imread('1196591.jpg')
big_picture_gray = cv2.cvtColor(big_picture,cv2.COLOR_BGR2GRAY)
threshold = 0.95
digits=[]
for i in range(1,10):
    template_name=f'tmpl\\{i}.jpg' # все шаблоны в папке tmpl
    template=cv2.imread(template_name, cv2.IMREAD_GRAYSCALE)
    res = cv2.matchTemplate (big_picture_gray, template, cv2.TM_CCOEFF_NORMED)
    res = cv2.convertScaleAbs(res, alpha=255) # to uint8
    bw=cv2.threshold(res, threshold*255, 255, cv2.THRESH_BINARY)[1]
    _, _, _, centroids=cv2.connectedComponentsWithStats(bw)
    for char in centroids[1:,:]:
        digits.append((i, char[0], char[1]))
digits.sort(key=lambda x: x[1])    # сортировка по x
ans=''.join(str(i[0]) for i in digits)
print(ans)
вывод:
Code
1
1196591
OCR на минималках.
3
0 / 0 / 0
Регистрация: 15.09.2022
Сообщений: 10
16.09.2022, 07:30  [ТС]
вот это высший пилотаж!)
100 баллов из 10.
0
5519 / 2872 / 571
Регистрация: 07.11.2019
Сообщений: 4,766
16.09.2022, 07:37
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.09.2022, 07:37
Помогаю со студенческими работами здесь

Php поиск картинки в картинке
Добрый день Столкнулся с проблемой. Есть фото 200х200 px и 1 кусочек этого фото 10х10 px, как найти координаты этого куска? ...

Найти координаты элемента на экране (поиск картинки на картинке)
Есть две картинки Первая допустим - красный квадрат А вторая - скриншот экрана, на котором где то есть этот красный квадрат. Как...

Поиск информации по игре в виде картинки (на картинке кликабельные 2d модели)
Привет. Может кто делал или видел примеры в нете. Смысл покопаться в таком проекте. Игра: состоит из картинок, на картинке разные объекты...

Размещение картинки на картинке
Здравствуйте. Такая проблема: надо на картинке разместить другую картинку, при чём первая должна быть либо фоном, либо просто растянута на...

Перемещение картинки по картинке
Нужно, чтобы одна картинка (прозрачная в середине) была наложена на вторую, а та перемещалась по движению курсора (при этом чтобы первая...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru