private void AnalizujPlansze(Mat obraz, KolorHSV min, KolorHSV max, ref VectorOfVectorOfPoint kontury, ref Mat obrazWyciety) { //NamedWindow("Test progów"); Mat obr = new Mat(); List <Point> pola = new List <Point>(); Mat zakres = new Mat(); InRange(obraz, min.DoTablicy(), max.DoTablicy(), zakres); BitwiseAnd(obraz, obraz, obrazWyciety, zakres); CvtColor(obrazWyciety, obrazWyciety, ColorConversion.Hsv2Bgr); obr = obrazWyciety.Clone(); CvtColor(obr, obr, ColorConversion.Bgr2Gray); Threshold(obr, obr, 0, 255, ThresholdType.Binary); //if (pokaz) Imshow("Oryginal", obr); Erode(obr, obr, GetStructuringElement(ElementShape.Rectangle, new Size(ELEMENT_STRUKTURALNY1, ELEMENT_STRUKTURALNY1), new Point(-1, -1)), new Point(-1, -1), 1, BorderType.Default, new MCvScalar()); //if(pokaz) Imshow("Erozja 1", obr); Dilate(obr, obr, GetStructuringElement(ElementShape.Rectangle, new Size(ELEMENT_STRUKTURALNY2, ELEMENT_STRUKTURALNY2), new Point(-1, -1)), new Point(-1, -1), 1, BorderType.Default, new MCvScalar()); //if(pokaz) Imshow("Dylacja", obr); Erode(obr, obr, GetStructuringElement(ElementShape.Rectangle, new Size(ELEMENT_STRUKTURALNY3, ELEMENT_STRUKTURALNY3), new Point(-1, -1)), new Point(-1, -1), 1, BorderType.Default, new MCvScalar()); //if(pokaz) Imshow("Erozja 2", obr); IOutputArray hierarchia = new Mat(); FindContours(obr, kontury, hierarchia, RetrType.Tree, ChainApproxMethod.ChainApproxSimple); }