|
95 / 15 / 3
Регистрация: 09.07.2009
Сообщений: 886
|
|
Определение количества фрагментов на изображении23.11.2021, 07:43. Показов 4526. Ответов 11
Метки нет (Все метки)
Мне нужно подсчитать количество фрагментов на изображении. Приложение должно быть десктопное, без использования интернета. Шаблон фрагмента - это элемент изображения, полученный из этого же изображения путем выделения нужного фрагмента и его сохранения. Фрагменты на изображении не перекрываются. В интернете много информации по обработке изображений с помощью ИИ, а есть более простые способы решения этой задачи? К сожалению, раньше обработкой изображений не занимался. Пока научился на C# загружать изображения, перемещаться по пикселам. Помогите, пожалуйста, ссылками на учебники и ресурсы, которые помогли бы мне решить эту задачу.
0
|
|
| 23.11.2021, 07:43 | |
|
Ответы с готовыми решениями:
11
Определение количества пикселей на изображении Определение текста на изображении Определение доминирующего цвета на изображении |
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 23.11.2021, 08:30 | ||
Сообщение было отмечено tumanovalex как решение
Решение
1
|
||
|
95 / 15 / 3
Регистрация: 09.07.2009
Сообщений: 886
|
|
| 23.11.2021, 20:34 [ТС] | |
|
А можно ли обойтись без сторонней библиотеки. Я, наверное, плохо рассказал о задаче. Есть просто картинка (jpg), на которой есть одинаковые элементы. Эти элементы повторяются по горизонтали (несколько рядов элементов на изображении), между ними есть небольшие расстояния по вертикали и горизонтали (поэтому и указал, что они не пересекаются). В качестве шаблона для подсчета можно в графическом редакторе вырезать один из элементов на изображении, сохранить и использовать его для подсчета. В качестве примера прикрепил картинку типа "шахматная доска", на которой нужно определить, например, количество черных квадратов, белых квадратов, пар "белый и черный квадрат". Изображение может быть цветным или черно-белым. На реальной картинке элементы более сложные. Я где-то читал, что нужно вычислить корреляционную функцию между изображением и его шаблоном. Если эта функция имеет наибольшее значение, то значит участок изображения очень похож на шаблон. Как я понимаю, нужно по изображению "перемещать" шаблон и вычислять корреляционную функцию между участком изображения и шаблона. Вот только не помню, как нужно было вычислять эту функцию. Есть, наверное, и другие способы.
0
|
|
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 23.11.2021, 21:14 | ||
|
0
|
||
|
95 / 15 / 3
Регистрация: 09.07.2009
Сообщений: 886
|
||||||
| 30.11.2021, 23:16 [ТС] | ||||||
|
К сожалению, с Питоном не знаком. Хотел бы перевести код на С++. По функциям OpenCV вопросов нет. Непонятные мне вещи указал в комментариях к коду. Может быть кто-нибудь поможет перевести код на С++?
0
|
||||||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||||||
| 01.12.2021, 14:04 | |||||||
Сообщение было отмечено tumanovalex как решение
Решение
1
|
|||||||
|
95 / 15 / 3
Регистрация: 09.07.2009
Сообщений: 886
|
|
| 09.12.2021, 21:50 [ТС] | |
|
Спасибо большое, zayats80888! Мне нужно сравнивать оригинальное изображение с шаблоном и получить количество совпадений. Попробовал из оригинального изображения вырезать черный квадрат в качестве шаблона и сравнить изображение с шаблоном с помощью matchTemplate. Пока не получилось, почему-то для оригинального изображения получаю (UINT8,3*2547*2231), а для шаблона (UINT8,1*32*31). Видимо, из-за этого и matchTemplate дает ошибку. Буду разбираться.
0
|
|
|
95 / 15 / 3
Регистрация: 09.07.2009
Сообщений: 886
|
||||||
| 10.12.2021, 20:13 [ТС] | ||||||
|
Я попытался переделать его для определения количества найденных по шаблону SquareBlackColor.jpg фрагментов в изображении pattern.jpg (изображения есть в прикрепленном проекте)
0
|
||||||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||||||||
| 10.12.2021, 21:20 | ||||||||
Сообщение было отмечено tumanovalex как решение
РешениеЕсли просто, то можно выбрать другой метод анализа совпадений(TM_SQDIFF_NORMED), потом разделить значения по порогу(threshold) и посчитать контуры.
1
|
||||||||
|
95 / 15 / 3
Регистрация: 09.07.2009
Сообщений: 886
|
|
| 10.12.2021, 22:46 [ТС] | |
|
Спасибо большое за ответ и Вашу помощь!
Мне нужно считать только совпадения, перекрытий фрагментов изображения, похожих на шаблон, нет. Между рядами фрагментов изображения, похожих на шаблон, есть черные полосы, отделяющие одну строчку фрагментов изображения от другой. Строк может быть много. Я так понял алгоритм: - подбирается метод анализа совпадений так, чтобы результат работы matchTemplate давал самую четкую картинку; - подбирается метод (функции OpenCV), которые из полученной в результате работы matchTemplate картинки выделяют элементы, по которым можно определить количество совпадений. Правильно ли я понял?
0
|
|
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 10.12.2021, 22:53 | ||
|
Я не разбираюсь в анализе изображений. Просто посмотрел документацию по функциям и прилепил, как мне показалось, то, что подходит для вашего конкретного случая. Не по теме: А вообще, на форуме есть отдельный раздел по OpenCV в C++
1
|
||
|
95 / 15 / 3
Регистрация: 09.07.2009
Сообщений: 886
|
|
| 10.12.2021, 23:06 [ТС] | |
|
Спасибо большое за ответы! Буду задавать вопросы по OpenCV в соответствующем форуме.
0
|
|
| 10.12.2021, 23:06 | |
|
Помогаю со студенческими работами здесь
12
с++ Opencv 2.4 Определение лица на изображении Определение статических жестов на изображении
Поиск и определение объекта на изображении Подсчет количества объектов на изображении Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|