C# Emgu.CV Вычесть из контура внутренние контуры
Ищу в некоторых фигуры только внешние контуры. Мне нужно чтобы например такое кольцо как на картинке обводилось только по внешнему контуру, без внутреннего. Прошу вашей помощи. Вот код , в котором я нахожу контуры
Image<Gray, byte> outputImage = inputImage.Convert<Gray, byte>().ThresholdBinary(new Gray(0),new Gray(1));
VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint();
Mat mat = new Mat();
CvInvoke.FindContours(outputImage, contours, mat, Emgu.CV.CvEnum.RetrType.Tree, Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple);
Image<Gray, byte> bg = new Image<Gray, byte>(inputImage.Width, inputImage.Height, new Gray(0));
CvInvoke.DrawContours(bg, contours, -1, new MCvScalar(255, 0, 0));
pictureBox2.Image = bg.Bitmap;
Ответы (1 шт):
Автор решения: Егор Ясиновский
→ Ссылка
Image<Gray, byte> outputImage = inputImage.Convert<Gray, byte>().ThresholdBinary(new Gray(0),new Gray(255)).Not();
pictureBox1.Image = outputImage.Bitmap;
VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint();
Mat mat = new Mat();
CvInvoke.FindContours(outputImage, contours, mat, Emgu.CV.CvEnum.RetrType.External, Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxNone);
Image<Gray, byte> bg = new Image<Gray, byte>(inputImage.Width, inputImage.Height, new Gray(0));
CvInvoke.DrawContours(bg, contours, -1, new MCvScalar(255, 0, 0));
pictureBox2.Image = bg.Bitmap;
MessageBox.Show(contours.Size.ToString());