我需要使用标准霍夫变换(而不是使用实现概率霍夫变换的 HoughLinesBinary 方法)并尝试通过创建 HoughLinesBinary 方法的自定义版本来做到这一点:
using (MemStorage stor = new MemStorage())
{
IntPtr lines = CvInvoke.cvHoughLines2(canny.Ptr, stor.Ptr, Emgu.CV.CvEnum.HOUGH_TYPE.CV_HOUGH_STANDARD, rhoResolution, (thetaResolution*Math.PI)/180, threshold, 0, 0);
Seq<MCvMat> segments = new Seq<MCvMat>(lines, stor);
List<MCvMat> lineslist = segments.ToList();
foreach(MCvMat line in lineslist)
{
//Process lines: (rho, theta)
}
}
我的问题是我不确定返回的序列是什么类型。我相信它应该是 MCvMat,因为阅读了 CvMat* 在 OpenCV 中使用的文档,其中还指出对于标准“矩阵必须是(创建的序列将是)CV_32FC2 类型”
我不清楚我需要做什么来返回和处理来自标准霍夫线的正确输出数据(即每条线的 2x1 向量给出 rho 和 theta 信息)。
任何帮助将不胜感激。谢谢
-萨尔