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