【发布时间】:2011-10-04 08:16:47
【问题描述】:
我正在使用 OpenCV 开发一个项目。我需要从高清照片中精确裁剪出一些对象。 我正在使用四叉树将照片切成碎片,然后计算每个四边形的同质性以确定物体的一部分是否在四边形中。 我根据四边形的同质性应用了一些具有不同阈值的过滤器作为 Canny。 我希望这个描述是可以理解的。
该算法适用于某些类型的对象,但我对其他一些对象感到困惑。 这里有一些我的问题的例子:我想要一种方法来压平我的轮廓。 第一个屏幕截图是使用 canny 过滤器和填充后的屏幕截图。第二个是最终的掩码结果。
为了达到这个结果,我使用cvFindContours(),所以我有轮廓,但我找不到像我想要的那样处理它们的方法。
【问题讨论】:
-
您的轮廓有什么问题?你想让它们更平滑吗?
-
@AdrianPopovici:有点意思,我希望他们能在不拥有所有人工制品的情况下与我的对象的曲线结合。这是原始作品:imageshack.us/photo/my-images/15/ex5gl.jpg
-
您可以在找到轮廓之前在黑白图像上运行一些过滤器,例如高斯过滤器和阈值,这会使轮廓稍微平滑,但可能完全不适合确切的对象点。您可以对轮廓做的另一件事是使用 AproxPoly,然后应用样条曲线或其他东西。
-
@AdrianPopovici:感谢您的帮助,我使用了 ApproxPoly,但我给了我太“方形”的结果,即使之后使用样条,我丢失了太多信息。我正在寻找一种近似曲线而不是多边形的方法,例如:imageshack.us/photo/my-images/821/ex6a.jpg 到 imageshack.us/photo/my-images/269/ex7f.jpg