CvInvoke.HoughLinesP()无法正常工作,为什么?

时间:2019-02-28 08:59:11

标签: c# opencv computer-vision emgucv

我正在尝试使用HoughLinesP()和Line(),但是它不起作用,因为它告诉我listVecs必须是IOutputArray。尽管因为我需要使用列表(或向量),但这没有任何意义。 IOutputArray文档甚至说可以使用“ VectorOf {XXX}”作为输出数组。我已经尝试通过将listVects类型转换为IOutput Array来转换listVects,但这也不起作用。我很沮丧。这是我正在使用的教程:  https://docs.opencv.org/2.4/doc/tutorials/imgproc/imgtrans/hough_lines/hough_lines.html

MCvScalar m = new MCvScalar(0, 0, 255);
            List<VectorOfInt> listVecs = new List<VectorOfInt>();
            IOutputArray o;
            CvInvoke.HoughLinesP(source, listVecs, 1, Math.PI / 180, 50, 50, 10);

            for (int i = 0; i < listVecs.Count; i++)
            {
                VectorOfInt v = listVecs[i];
                System.Drawing.Point pointOne = new System.Drawing.Point();
                pointOne.X = (v[0]);
                pointOne.Y = (v[1]);
                System.Drawing.Point pointTwo = new System.Drawing.Point();
                pointTwo.X = (v[2]);
                pointTwo.Y = (v[3]);

                CvInvoke.Line(cdst, pointOne, pointTwo, m, 1, Emgu.CV.CvEnum.LineType.EightConnected, 8);
            }

1 个答案:

答案 0 :(得分:0)

HoughlinesP返回线段

尝试一下(请注意,我没有看其他代码,只是更正了变量类型并删除了不必要的转换代码)

MCvScalar m = new MCvScalar(0, 0, 255);
            listVecs[] = LineSegment2D();
            IOutputArray o;
            listVecs = CvInvoke.HoughLinesP(source, 1, Math.PI / 180, 50, 50, 10);

            for (int i = 0; i < listVecs.Length; i++)
            {


                CvInvoke.Line(cdst, listVecs[i].P1, listVecs[i].P2, m, 1, Emgu.CV.CvEnum.LineType.EightConnected, 8);
            }