コード例 #1
0
        private void ShowImage()
        {
            Mat res = RoadDetector.Detect(GetCurrentFile(), new RoadDetector.Parms {
                threadshold1 = flow, threadshold2 = fhigh
            });

            mainImage.Source = MatToImgSrc(res);
            Mat orig = CvInvoke.Imread(GetCurrentFile());
            Mat ff   = new Mat();

            orig.CopyTo(ff);

            var lines = RMatFilter.FilterRoadByMean(ff);

            secondaryImage.Source = MatToImgSrc(ff, bmp =>
            {
                using (var g = Graphics.FromImage(bmp))
                {
                    var pen = new System.Drawing.Pen(System.Drawing.Brushes.AliceBlue, 20);
                    g.DrawLine(pen, lines.leftStart, lines.leftEnd);
                    g.DrawLine(pen, lines.rightStart, lines.rightEnd);
                }
            });
            thirdImage.Source = new BitmapImage(new Uri("file://" + GetCurrentFile()));
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: gzhangx/netcvreco
        static void Main(string[] args)
        {
            int[] res = RMatFilter.GetRoadMeanTest();
            for (var i = 0; i < res.Length; i++)
            {
                //if (res[i] != 0) Console.WriteLine(i + "," + res[i]);
            }
            return;

            //SaveVideo(@"D:\gang\iphone\2018-05-28\IMG_3050.MOV");
            String win1 = "Test Window";                    //The name of the window

            CvInvoke.NamedWindow(win1);                     //Create the window using the specific name

            Mat img = new Mat(200, 400, DepthType.Cv8U, 3); //Create a 3 channel image of 400x200

            img.SetTo(new Bgr(255, 0, 0).MCvScalar);        // set it to Blue color

            //Mat road = CvInvoke.Imread("road.jpeg");
            Mat road = CvInvoke.Imread("vid405.jpg");
            Mat gray = new Mat();

            CvInvoke.CvtColor(road, gray, ColorConversion.Bgr2Gray);

            var low = gray.Clone();

            low.SetTo(new Gray(200).MCvScalar);
            var upper = gray.Clone();

            upper.SetTo(new Gray(255).MCvScalar);
            Mat filtered = new Mat();

            CvInvoke.InRange(gray, low, upper, filtered);
            filtered.CopyTo(img);
            //gray.Save("gray.png");

            //Draw "Hello, world." on the image using the specific font
            CvInvoke.PutText(
                img,
                "Hello, world",
                new System.Drawing.Point(10, 80),
                FontFace.HersheyComplex,
                1.0,
                new Bgr(0, 255, 0).MCvScalar);


            var edges = new Mat();

            CvInvoke.Canny(filtered, edges, 1, 2);
            //edges = MaskImg(edges);
            //CvInvoke.Imshow(win1, RoadDetector.Detect("vid405.jpg")); //Show the image
            CvInvoke.Imshow(win1, edges); //Show the image

            var lines = new Mat();

            CvInvoke.HoughLinesP(edges, lines, 1, Math.PI / 180, 10);


            img.SetTo(new Bgr(255, 0, 0).MCvScalar); // set it to Blue color
            for (var i = 0; i < lines.Rows; i++)
            {
                var v4i  = lines.Row(i);
                var data = v4i.GetData();
                var ints = new int[4];
                for (var index = 0; index < ints.Length; index++)
                {
                    ints[index] = (int)data.GetValue(index); //BitConverter.ToInt32(data, index * sizeof(int));
                }

                CvInvoke.Line(img, new System.Drawing.Point(ints[0], ints[1]),
                              new System.Drawing.Point(ints[2], ints[3]), new Gray(0).MCvScalar);
            }

            //CvInvoke.Imshow(win1, img); //Show the image
            edges.Save("edges.png");
            CvInvoke.WaitKey(0);          //Wait for the key pressing event
            CvInvoke.DestroyWindow(win1); //Destroy the window if key is pressed
        }