我一直在尝试检测图像中的形状,并计算图像中存在多少此类形状,例如加号。是否有任何内置功能来检测这种形状?如果有请告诉我。
谢谢你。
您需要找到图像中的所有轮廓,然后对其进行过滤。
我们知道加号有 12 个角。因此,您需要过滤所有具有 12 个角的轮廓。当然,有时这会给你一些不需要的对象。因此,您可以再次过滤那些在 2 条线(3 个角)之间的角度最大为 0.3 cos 的轮廓。
查看 OpenCV 示例目录中的 squares.cpp。它找到所有具有 4 个角和最大角度的轮廓。0.3 因数 所以几乎所有的正方形。
您还可以查看霍夫变换。
检测形状的一种方法是使用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 设备上运行。