private static Mat[] StitchingPreprocess(int width, int height, int count) { Mat source = new Mat(@"C:\Penguins.jpg", LoadMode.Color); Mat result = source.Clone(); var rand = new Random(); var mats = new List<Mat>(); for (int i = 0; i < count; i++) { int x1 = rand.Next(source.Cols - width); int y1 = rand.Next(source.Rows - height); int x2 = x1 + width; int y2 = y1 + height; result.Line(new Point(x1, y1), new Point(x1, y2), new Scalar(0, 0, 255)); result.Line(new Point(x1, y2), new Point(x2, y2), new Scalar(0, 0, 255)); result.Line(new Point(x2, y2), new Point(x2, y1), new Scalar(0, 0, 255)); result.Line(new Point(x2, y1), new Point(x1, y1), new Scalar(0, 0, 255)); Mat m = source[new Rect(x1, y1, width, height)]; mats.Add(m.Clone()); //string outFile = String.Format(@"C:\temp\stitching\{0:D3}.png", i); //m.SaveImage(outFile); } result.SaveImage(@"C:\temp\parts.png"); using (new Window(result)) { Cv.WaitKey(); } return mats.ToArray(); }