OCR Line detecting



我正在尝试检测图像中句子的边界框。我在c#中使用Emgu OpenCV,使用HougLinesP方法提取线条,但我显然做错了。我看了很多例子,用houghLines来估计倾斜程度,这就是我想做的。

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

下面是我的代码摘录:

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-利用频域。例子

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

相关内容

  • 没有找到相关文章

最新更新