Я пишу небольшое приложение для обнаружения фигуры. Что мне нужно сделать в первую очередь, так это найти наиболее значимую фигуру на изображении. Я начал с некоторой предварительной обработки, включая преобразование изображения в оттенки серого, пороговое значение и обнаружение краев. Изображение до и после этих операций представлено ниже
Перед
После
Итак, вы видите, что основная фигура видна (однако она немного разбросана), а также есть некоторые шумы (маленькие деревья и т.д.). Мне нужно сделать так, чтобы как-то извлечь только самую значимую форму (самую большую) - в этом случае это башня. То, что я хотел сделать, это использовать функцию поиска контура в opencv, а затем как-то aproximate найти conturs с полигоном. Тогда я (каким-то образом) вычислил бы площадь гравюр и выберет только самую большую. До сих пор я управлял (только), чтобы найти контуры, используя
cvFindContours(crated,g_storage,&contours);
Я знаю, что есть
cvApproxPoly
однако я не могу получить полезную информацию для результата этой функции. Может ли кто-нибудь сказать мне, можно ли вычислить область контура или приблизить контур с полигоном. Может быть, вам лучше понять, как извлечь только самую значимую фигуру?