Методы распознавания нескольких объектов на изображении (треугольников)?

Добрый вечер. Столкнулся с собственной безграмотностью.
Программой распознаю треугольник. В лоб так сказать. Перебираю изображение, пока не нахожу пиксель нужного цвета, далее жуком определяю границы и вычисляю треугольник.
Как организовать тоже самое для нескольких треугольников, чтобы не считать один тот же треугольник n-ое число раз?
Условие в том, что количество треугольников не известно 0_0.
  • Вопрос задан
  • 1131 просмотр
Пригласить эксперта
Ответы на вопрос 3
tsarevfs
@tsarevfs Куратор тега C++
C++ developer
Самое простое: когда находишь один -- определяешь его границы и дальше не ищешь внутри найденных. треугольников.
Можно попробовать что-то типа Преобразования Хафа. Найти все линии и потом составить из них треугольники. Но если цвет треугольников задан, это кажется слишком сложным.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
зачем жуком?!
1. Сегментируем изображение на отдельные объекты: "островные зоны", чтобы выявлять типы объектов. В нашем случае: треугольник или не треугольник.
2. На каждом "острове": нашли угол - вычитаем из 180 и ищем сразу противоположную сторону, затем определяем пересечение прямой отрезка противоположной стороны со сторонами угла.
3. Как только нашли - удаляем этот треугольник с "полотна".
Ответ написан
@Carver182
инженер-программист
Несколько вариантов:
1) Если треугольники разные, сделать картинку ЧБ, можно сделать пороговое преобразование и результат скормить функции findContours, на выходе получаете контуры более-менее выделенных объектов (несколько треугольников-несколько контуров). Далее, каждый контур проверяете на то что он треугольник или нет.
2) Если треугольники все одинаковые по форме и размерам, вычисляете первый и получаете, таким образом, образец поиска и, воспользовавшись функцией templateMatching ищете совпадения этого образца на искомой картинке.
3) Если треугольники все одинаковые только по форме, но не по площади, также находите первый треугольник и вычисляете его, так называемый, момент инерции(у каждой фигуры он уникальный), нормализуете этот момент, и сравниваете с остальными моментами других объектов. PS. фигурки, среди которых будете искать треугольник, можете получить в виде контуров, окак описано в первом варианте.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы