Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
Заблокирован

Поиск схожего отрезка изображения на основном

07.10.2020, 14:55. Показов 1747. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1111.png - основное изображение
22222.png - его отрезок изображения

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Читать основное изображение
img_rgb = cv2.imread(f'{patch}1111.png')
# Преобразовать его в оттенки серого
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
# Прочитайте шаблон
template = cv2.imread(f'{patch}6-spectrogram/22222.png',0)
# Сохраняем ширину и высоту шаблона в ш и ч
w, h = template.shape[::-1]
# Выполнять операции сопоставления.
res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
# Укажите порог
threshold = 0.8
# Сохранять координаты совпадающей области в массиве
loc = np.where( res >= threshold) 
# Нарисуйте прямоугольник вокруг соответствующей области.
for pt in zip(*loc[::-1]):
    cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,255,255), 2)
#Сохраняем изображение
cv2.imwrite(f'{patch}6-spectrogram/finish.png', img_rgb)
Не совсем понимаю, как выполнить поиск отрезка на оcновном изображении, отметить прямоугольником и сохранить его?
Миниатюры
Поиск схожего отрезка изображения на основном   Поиск схожего отрезка изображения на основном  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.10.2020, 14:55
Ответы с готовыми решениями:

Поиск и удаление схожего фрагмента в нескольких треках
Имеется несколько разных треков, но в каждом из них присутствует одинаковый звуковой фрагмент. Этот фрагмент вклеен в общий фон...

Поиск первого изображения на экране и затем поиск второго изображения
Здравствуйте! Как находить одно изображение разобрался и решил с помощью PyAutoGui Пример№1: Найти картинку1 на экране и затем...

Поиск изображения в постороннем окне, имея исходник изображения
У меня, в общем, возник вопрос. Есть ли какая-то литература, написанная доступным языком, как работать с изображениями? Мне нужно: ...

4
Заблокирован
07.10.2020, 14:56  [ТС]
Я видимо неверно указал
Python
1
2
3
template = cv2.imread(f'{patch}6-spectrogram/22222.png',0)
# Сохраняем ширину и высоту шаблона в ш и ч
w, h = template.shape[::-1]
Ругается
Python
1
2
3
4
5
6
7
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/usr/local/lib/python3.8/site-packages/cv2/qt/plugins" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
 
Available platform plugins are: xcb.
 
Aborted
0
2741 / 1667 / 268
Регистрация: 19.02.2010
Сообщений: 4,410
07.10.2020, 17:25
Вы бы ещё вместо пнг в жипег картинки жали - чтобы погрешности сжатия затем добавили лишних проблем при сравнении картинок.
Ибо нафига такие данные представлять в виде картинок и обрабатывать как картинки?
Обычные одномерные массивы, массив-шаблон можно двигать относительно проверяемого более длинного массива, и считать коэффициент корреляции в области перекрытия шаблона и изучаемого массива.
1
Заблокирован
07.10.2020, 20:00  [ТС]
Необходимо сравнивать основное изображение с 100 000 шаблонов.

По моему это наиболее быстрый способ обработать огромное количество шаблонов. С погрешностью в 20%, то есть найти шаблон который будет схож на 80%.

Вы хотите предложить хранить данные не в виде изображения(спектрограммы), а хранить массивы в txt. То есть 100 000 txt c массивами?

Будет данный способ быстрее того, который изначально был выбран? И возможно ли так же установить погрешность в 20%?

Добавлено через 23 минуты
Верно ли я вас понял. В изображениях не сохраняем, а сохраняем сформированный массив в txt. Дабы каждый раз при сравнении не приводить изображение в массив?

Вопрос, как массив, обрезать, то есть необходимо 30% того что находится по центру, затем записать его в txt.
Второй вопрос, допустим подгрузили 2 массива, сопоставляем 2 массива через тот же
Python
1
cv2.matchTemplate(
??
0
2741 / 1667 / 268
Регистрация: 19.02.2010
Сообщений: 4,410
07.10.2020, 21:47
Лучший ответ Сообщение было отмечено dondublon как решение

Решение

Цитата Сообщение от Gerd199 Посмотреть сообщение
По моему это наиболее быстрый способ обработать огромное количество шаблонов.
Ага, для этого обязательно надо было добавить к массивам данных лишнюю размерность.
Поясняю. К исходной оси, упорядочивающей отсчёты данных (т.е. соответствующей индексам одномерного массива чисел) - Вы ещё добавили другую ось, превратив КАЖДОЕ СКАЛЯРНОЕ исходное число В НАБОР ЗНАЧЕНИЙ (яркостей пикселов) по этой новой оси.
Вы сами, добровольно и с песней замедлили скорость сравнения как минимум во столько раз, сколько пикселов в картинках по вертикальной оси Ибо ХЗ, как там работает cv2.matchTemplate - а вдруг она ещё будет двигать шаблон вверх-вниз, дабы поймать возможные смещения уровня? (т.е., как простейший пример, если шаблон в виде "пилы" а-ля последовательность 0-1-0-1-0, то чтобы ловились и 1-2-1-2-1, и 10-11-10-11-10, и все остальные аналогичные сдвиги на одну и ту же константу вверх или вниз).

Цитата Сообщение от Gerd199 Посмотреть сообщение
Вы хотите предложить хранить данные не в виде изображения(спектрограммы), а хранить массивы в txt. То есть 100 000 txt c массивами?
Млин, слов нет... Одни маты.
Вы поймите - что и картинки, и тхт есть просто разные ПРЕДСТАВЛЕНИЯ Ваших исходных двоичных данных (полученных с датчика, или с помощью расчётов).
Естественно, что в БИНАРНЫХ файлах надо такие исходные данные хранить. Или в BLOB-полях базы данных.
Т.е. есть в памяти компа одномерный массив чисел-результатов - этот массив в бинарный файл и запихивается. И достаётся из файла потом простым чтением в память (а не с помощью алгоритма распаковки из картинки какого-то сжатого формата). А если захочется вдруг какому-то человеку ощутить эти данные его человеческими органами чувств - то на основе этих чисел строится хоть график, хоть таблица, хоть звук генерится, хоть азбука Морзе пинков механической ногой робота по человечьей заднице.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.10.2020, 21:47
Помогаю со студенческими работами здесь

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

Создание редактора схожего на osu
Здраствуйте, делаю редактор осу подобной игры. Для понимания, игра заключается в уничтожении объектов в ритм музыки. Хочу...

Поиск ближайшего отрезка
Всем добрый день! Есть 1е множество точек (с координатами х, у) на основе которого строится диаграмма Вороного. На выходе получаем...

Создание типа данных схожего с двумерным массивом
Изучаю сейчас ООП в С++, и в качестве жертвы выбрал создание нового типа данных аля матрица. Проблема в том, как сделать, чтобы с ним можно...

Реализация Web-интерфейса, схожего с настольным приложением
Здравствуйте! Подскажите, пожалуйста, какими средствами можно организовать следующее (видел на сайте предоставляющем аналитические...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru