我正在编写一个用于形状检测的小应用程序。首先需要做的是在图像上找到最显著的形状。我从一些预处理开始,包括将图像转换为灰度图像、阈值处理和边缘检测。下面展示了这些操作前后的图像:
操作前
操作后
因此,您可以看到主要的形状已经可见(虽然有点分散),还有一些噪声(小树等)。我需要做的是提取出最显著的形状(最大的那个),在这种情况下它是一座塔。我想做的是使用OpenCV中的轮廓查找函数,然后以某种方式用多边形逼近找到的轮廓。然后我会(以某种方式)计算轮廓的面积并仅选择最大的那个。
到目前为止,我只能找到轮廓:
cvFindContours(crated,g_storage,&contours);
我知道有一种
cvApproxPoly
我使用了一个函数,但是无法获得有用的信息来描述这个函数的结果。请问是否有可能计算轮廓的面积或者用多边形逼近轮廓?也许你有更好的想法来提取只有最显著的形状?