我是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,并使用块进行安装。 我不知道异常消息是什么意思。
答案 0 :(得分:1)
我不知道我在做什么错,但是我没有使用CvInvoke.DrawContours(),而是使用Image.DrawPolyline实现了我的目标。
我使用:
image.DrawPolyline(points, false, new Gray, thickness);