【发布时间】:2014-03-19 11:36:34
【问题描述】:
我正在尝试检测图像中句子的边界框。我在 C# 中使用 Emgu OpenCV 使用 HougLinesP 方法来提取线条,但我显然做错了。我看过很多例子,estimate the skew level with 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();
任何帮助将不胜感激。
【问题讨论】:
标签: c# opencv ocr hough-transform