我正在编写一个有趣的应用程序,我想从运行者 T 恤中获取数字。我正在使用 AForge.NET 和 emguCV 来获得预期的结果,我认为我已经非常接近解决我的问题了,但我仍然希望从更有经验的用户那里得到意见。 首先我有这张图片:
之后我应用了最大对比度和一些亮度,我得到了这个结果:
接下来我将图像二值化并得到最终结果: [^]
接下来我应用一些基本过滤器来清除小 Blob 和非常大的 Blob 。接下来,我尝试找到高度>宽度的 Blob ,然后我尝试找到相似的 Blob 大小和形状,并且彼此相邻。 这是我的方法,在大多数情况下都适合我。作为补充,我创建了我可能认为是字母的可能 Blob 的直方图。这意味着我在该矩形中寻找 2 种主色。如果两种主色是黑色(ish)或白色(ish),我知道这是运行者衬衫上的数字。 我想知道的是,您有什么不同的方法吗?像混合 channel 、转换到 HSV 空间以及过滤黑色? 我的整个想法是用少量不是数字的 Blob 来获得这些数字。 我将不胜感激任何建议。 评论和想法都很好,如果你想写代码,请去做。 谢谢...
最佳答案
您需要仔细考虑为什么要执行这些步骤。你在做什么似乎有点随意。它可能适用于一张图片,但不适用于其他图片。我的建议:
- 尽可能简单
- 在灰度或二进制中工作(尽早丢弃颜色 - 它确实没有什么对你有用的信息)
- 清楚这需要适用于哪些情况(倒置字体、字体大小、旋转、背景)
- 有一个训练和测试图像数据库,您可以根据这些图像评估您的方法,因此这不仅仅是主观评估!
- 已经有大量关于这个主题的文献。我建议您阅读它而不是重新发明轮子!否则你可能会在这上面花很多年!
关于c# - 过滤不需要的 Blob (检测图像中的数字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18812200/