Я создаю приложение для родителя моего друга, который, к сожалению, имел удар, и больше не может говорить, читать или заклинание. Однако он может сделать довольно подробные чертежи.
В настоящее время я создал приложение, которое может обрабатывать изображение чертежа и обнаруживать основные фигуры. (Линии, квадраты и треугольники) Приложение может подсчитать, сколько из каждой фигуры было нарисовано, поэтому он знает разницу между изображением с двумя квадратами, приложенными к изображению с одним квадратом.
Это накладывает на пользователя большую часть когнитивной нагрузки, чтобы запомнить все комбинации фигур и то, что они означают. В настоящее время я обнаруживаю контуры изображения через
findContours(maskMat, contours, hierarchy, CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE);
То, что я хотел бы достичь, - это то, что пользователь рисует фигуру, добавляет ее в банк известных чертежей, а затем каждый раз, когда он рисует изображение, приложение обрабатывает каждое известное изображение, сравнивая его с исходным изображением и сохраняя значение подобия, Затем, принимая наивысшее значение подобия, при условии, что оно выше порогового значения, его можно принять за изображение, изображенное на рисунке.
Я изучил соответствие OpenCV Pattern Matching, а также Templating, но с ненадежными результатами.
Я прошу совета относительно наилучшего подхода, который обеспечит результат, на который я надеюсь.
Я построил рекламное видео для моей университетской лекции, чтобы лучше показать, что делает приложение. Если вас это интересует, вы можете посмотреть его здесь. https://youtu.be/ngMUUIsLHoc
Спасибо заранее.