0

我一直在尝试检测图像中的形状,并计算图像中存在多少此类形状,例如加号。是否有任何内置功能来检测这种形状?如果有请告诉我。

谢谢你。

4

3 回答 3

1

您需要找到图像中的所有轮廓,然后对其进行过滤。

我们知道加号有 12 个角。因此,您需要过滤所有具有 12 个角的轮廓。当然,有时这会给你一些不需要的对象。因此,您可以再次过滤那些在 2 条线(3 个角)之间的角度最大为 0.3 cos 的轮廓。

查看 OpenCV 示例目录中的 squares.cpp。它找到所有具有 4 个角和最大角度的轮廓。0.3 因数 所以几乎所有的正方形。

于 2013-08-19T06:56:44.400 回答
0

您还可以查看霍夫变换。

于 2013-08-19T07:46:32.987 回答
0

检测形状的一种方法是使用cvBlobsLib

一个执行二值图像连接组件标记的库(类似于 regionprops Matlab 函数)。它还提供了从提取的 blob 中操作、过滤和提取结果的功能,有关更多信息,请参阅功能部分。

例如,请参阅: https ://www.youtube.com/watch?v=Y8Azb_upcIQ

另一种方法是使用EmguCV

Emgu CV 是 OpenCV 图像处理库的跨平台 .Net 包装器。允许从 .NET 兼容语言(例如 C#、VB、VC++、IronPython 等)调用 OpenCV 函数。包装器可以在 Mono 中编译并在 Windows、Linux、Mac OS X、iPhone、iPad 和 Android 设备上运行。

于 2013-08-19T19:24:04.357 回答