Emgu.CV.Util.CvException:'OpenCV:i <0'

时间:2019-02-04 16:40:17

标签: c# emgucv kinect-v2

我是EmguCv和kinect v2开发的新手。 我正在尝试绘制在空白灰色图像上检测到的手的轮廓。而且我遇到的这种异常总是在代码行之后出现:
CvInvoke.DrawContours(图像,温度,-1,新的MCvScalar(255、0、0),厚度);

这是我绘制轮廓的功能:

private void drawOnEachHand(Hand whichHand,Image image){

        int thickness = 2;

        //Console.WriteLine("Check2 " + (whichHand == null));
        if (whichHand != null)
        {
            VectorOfPoint temp = new VectorOfPoint(whichHand.ContourDepth.Count);
            List<Point> arrTemp = new List<Point>();

            for (int intCounter = 0; intCounter < whichHand.ContourDepth.Count; intCounter++)
            {
                int X = Convert.ToInt32(MathExtensions.ToPoint(whichHand.ContourDepth[intCounter]).X);
                int Y = Convert.ToInt32(MathExtensions.ToPoint(whichHand.ContourDepth[intCounter]).Y);
                arrTemp.Add(new Point(X, Y));
            }

            temp.Push(arrTemp.ToArray());

            CvInvoke.DrawContours(image, temp, -1, new MCvScalar(255, 0, 0), thickness);
            Console.WriteLine(image.Cols);
        }
    }

这是异常消息:

引发异常:Emgu.CV.World.dll中的'Emgu.CV.Util.CvException'
Emgu.CV.World.dll中发生了类型为'Emgu.CV.Util.CvException'的未处理异常
OpenCV:i <0

我正在使用Visual Studio 2017,Emgu Cv 3.x,并使用块进行安装。 我不知道异常消息是什么意思。

1 个答案:

答案 0 :(得分:1)

我不知道我在做什么错,但是我没有使用CvInvoke.DrawContours(),而是使用Image.DrawPolyline实现了我的目标。

我使用:
image.DrawPolyline(points, false, new Gray, thickness);