如何在opencv中从任意角度检测字母“E”

时间:2013-12-31 15:47:12

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

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

我考虑过多种方法。模板匹配和OCR在任何角度都不起作用,因此我正在考虑使用精确边缘检测。在研究之后,似乎可以使用Hough的线变换或canny边缘检测。

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

输入和输出图像在下方,但它们可以处于任何角度。

输入:

input

输出:

output

1 个答案:

答案 0 :(得分:2)

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

  1. 使用cv::findContours()从二进制图像(Canny)中提取轮廓。
  2. 对于找到的每个轮廓,将轮廓点的数量与字母“E”所需的轮廓点数进行比较。
  3. 如果匹配,则表示您检测到“E”。
  4. 如果您需要更强大的功能,可以: