【问题标题】:How to detect letter "E" from any angle in opencv如何在opencv中从任何角度检测字母“E”
【发布时间】:2014-01-18 12:41:38
【问题描述】:

OpenCV 初学者在这里。我正在努力使用C++ 检测openCV 中的特定形状。具体形状是字母"E"

我已经考虑了多种方法来做到这一点。模板匹配和OCR 在任何角度都不起作用,所以我正在考虑使用精明的边缘检测。在对此进行研究之后,似乎可以使用 Hough 的线变换或精确边缘检测。

我能够实现这两个,但这是我遇到问题的下一步。你们中的任何人都可以就如何从这里继续前进提供一些指导。应用 Canny 过滤器后,如何检查字母“E”是否存在?

输入和输出图像如下,但它们可以是任何角度。

输入:

输出:

【问题讨论】:

  • 你最好上传原始图像和你的处理结果
  • 谢谢,我现在就上传。
  • 一个想法是通过使用提取的单应性扭曲图像来“消除角度”。看看“图像校正”来做到这一点。之后,OCR 和/或模板匹配可能适用。您必须提取直线(例如从可能的字母中)并在那里假设直角,这样您就可以计算 hompgraphy。

标签: c++ opencv image-processing feature-detection feature-extraction


【解决方案1】:

根据此“检测”需要的稳健程度,您的问题的可能解决方案的复杂性可能会有很大差异。由于您没有在问题中提到稳健性,因此这可能不是问题。因此,一个相当简单的解决方案可能是:

  1. 使用cv::findContours() 从二值图像 (Canny) 中提取轮廓。
  2. 对于找到的每个轮廓,将轮廓点数与字母“E”的预期轮廓点数进行比较。
  3. 如果匹配,您检测到“E”。

如果您需要更高的稳健性,您可以:

【讨论】:

  • 非常感谢,稳健性是未来所必需的,但我只是想先了解最初的概念。感谢您的帮助,新年快乐!
猜你喜欢
  • 1970-01-01
  • 2011-11-30
  • 2018-05-15
  • 2018-07-07
  • 1970-01-01
  • 2017-06-14
  • 2020-05-27
  • 1970-01-01
  • 2011-03-15
相关资源
最近更新 更多