【问题标题】:Segmenting License Plate Characters #ImageProcessing分割车牌字符#ImageProcessing
【发布时间】:2021-05-25 12:32:04
【问题描述】:

对于大学项目,我必须使用 Python 从车牌中分割字符。这听起来相当简单。然而,问题是我们不允许使用任何复杂的库函数,例如 cv2.findContours()。 cv2.imread() cv2.resize() cv2.rectangle() 等基础是允许的。

我编写了一个函数,可以在图像中定位车牌并输出结果,如图像 Output 1Output 2 所示。这些是二值图像。

正如我们所见。有时,这个函数的输出比较干净(Output 2)。但是,它通常也很吵(Output 1

为了获得干净的图像 (Output 2),我尝试查找包含少于 x 个黑色像素的列以分割字符。但是,这仅在图像干净时才有效。通常情况并非如此。在此处更改 x 参数并没有显着改善。

有人对我如何解决这个问题有建议吗?

【问题讨论】:

  • 我会照顾图像中的小区域并将其删除。示例:黑色区域只有 4 个像素大,所以这一定是噪点。当达到特定阈值时,该区域被检测为数字或字母。
  • @ChristianYami:由于不允许使用 findContours 功能,因此获取区域并不是那么简单。

标签: python-3.x image-processing image-segmentation


【解决方案1】:

对于基本解决方案,您可以通过计算所有垂直线上的黑色像素来形成轮廓。然后在此配置文件的滑动间隔中查找平均计数的最大值和最小值。间隔长度应该是字符预期宽度的一小部分。只应考虑具有足够对比度的极值。

为避免旋转板中周围特征的影响,您可以将计数限制为仅图像的一个切片。

一旦字符之间有了近似的垂直限制,您就可以重复类似的处理来获取字符的下限和上限(不再需要滑动间隔)。

最后,您可以通过在这样形成的矩形中找到水平限制来优化装箱。

【讨论】:

  • 这真是天才!非常感谢:)
  • @codefreak287。谢谢。最关键的一步是第一次拆分。 IMO,依靠白色部分的高度是最可靠的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-16
  • 2019-04-18
  • 2017-09-30
  • 2015-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多