OCR线路检测

时间:2014-03-19 11:36:34

标签: c# opencv ocr hough-transform

我试图检测图像中的边界框。我在C#中使用Emgu OpenCV使用HougLinesP方法来提取行,但我显然做错了。我看了很多例子,estimate the skew level with houghLines几乎就是我想做的事。

使用该样本图像我做了一些预处理(阈值处理,canny等)并最终得到http://snag.gy/sWCuO.jpg,但是当我做HoughLines并在原始图像上绘制线条时,我得到{{3 }。

以下是我的代码摘录:

using (MemStorage stor = new MemStorage())
{
    Image<Hsv, byte> imgHSV = new Image<Hsv, byte>(bitmap);
    Image<Gray, Byte> gray = imgHSV.Convert<Gray, Byte>().PyrDown().PyrUp();

CvInvoke.cvCanny(gray, EdgeMap, 100, 400, 3);
    IntPtr lines = CvInvoke.cvHoughLines2(EdgeMap, stor,
        Emgu.CV.CvEnum.HOUGH_TYPE.CV_HOUGH_PROBABILISTIC, 1, Math.PI / 360, 10, 
        gray.Width / 4, 20);

   Seq<LineSegment2D> segments = new Seq<LineSegment2D>(lines, stor);
   ar = segments.ToArray();

}

Graphics g = Graphics.FromImage(OriginalImage);
foreach (LineSegment2D line in ar)
{
    g.DrawLine(new Pen(Color.Blue), 
        new Point(line.P1.X, line.P1.Y), 
        new Point(line.P2.X, line.P2.Y));
}
g.Save();

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以尝试两种方法:

1-利用频域。示例here

2-预处理后,提取轮廓,收集所有点(或至少收集所有非黑点);找到最小边界矩形及其角度。示例here