Как в загруженном растровом изображении распознать круг, квадрат или треугольник?
Фигура черная на белом фоне.
Хотя бы скажите,где копать. Может, библиотека есть для этого?
Фигура черная на белом фоне.
Хотя бы скажите,где копать. Может, библиотека есть для этого?
Длинно для комментария, приведу ответом:
Попробуйте подход с использованием моментов изображения.
Если на картинке только одна фигура, считайте моменты по всем пикселам, если несколько - разделите на связные области, моменты считайте по областям.
Для образцов посмотрите, будут ли для данного множества фигур моменты давать явные признаки, позволяющие их различить. Если недостаточно, посмотрите ещё моменты Ху.
Сделал, тестовые файлы распознались. Поделюсь: может, кому-то будет полезно.
Принял три допущения:
Разбиваю высоту на 30 (эмпирически подобрал) равных частей. И каждую такую горизониальную линию прохожу от начала до конца с шагом ширина/30. И если предыдущая точка была белой, а текущая черной - запоминаю эту точку как точку контура, фиксируя также направление (ч-б или б-ч).
Затем самое трудное - сортирую эти точки, чтоб точки контура шли по порядку в контуре.
Затем ищу стороны - то есть точки подряд, почти лежащие на прямой (определяю по углу наклона, допустимое отклонение 0.3). И считаю стороны. 3 - треугольник, 4 - квадрат, остальное - круг.
Если кому-то интересно - могу кинуть ссылку на GitHub с кодом (Laravel 9)