CvInvoke.HoughLinesP () не работает, по какой причине? - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь использовать HoughLinesP () и Line (), и он не работает, потому что говорит мне, что listVecs должен быть массивом IOutputArray.Это не имеет смысла, потому что мне нужно использовать список (или вектор).В документации IOutputArray ДАЖЕ СКАЖЕТСЯ, что я могу использовать «VectorOf {XXX}» в качестве выходного массива.Я попытался преобразовать listVects, приведя его тип к массиву IOutput, и это тоже не работает.Я очень расстроенВот учебник, который я использую: 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 голосов
/ 09 марта 2019

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);
            }
...