C# Emgu.CV Вычесть из контура внутренние контуры

Кольцо и 2 его синих контураИщу в некоторых фигуры только внешние контуры. Мне нужно чтобы например такое кольцо как на картинке обводилось только по внешнему контуру, без внутреннего. Прошу вашей помощи. Вот код , в котором я нахожу контуры

            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());
→ Ссылка