Beispiel #1
0
        private void Btn_findCorner_Click(object sender, EventArgs e)
        {
            var bitmap = this.picSrc.GetFirstRegionRect();
            var image  = new Image <Bgr, byte>(bitmap);

            //Mat mat_threshold = new Mat();
            //int myThreshold = 200;
            //CvInvoke.Threshold(image, mat_threshold, myThreshold, 255, Emgu.CV.CvEnum.ThresholdType.BinaryInv);
            //new CommonUse().SaveMat(mat_threshold, "角检测的二值化前期");
            //LineSegment2D
            BriefDescriptorExtractor extractor = new BriefDescriptorExtractor();
            FastDetector             detector  = new FastDetector((int)this.numericUpDown1.Value);
            var points = detector.Detect(image);

            //detector.

            //CvInvoke.DrawChessboardCorners(image, new Size(1, 1), points, true);
            for (int i = 0; i < points.Length; i++)
            {
                //if (points[i].Angle < 60)
                //{
                //    continue;
                //}
                var tmpPoint = new Point((int)points[i].Point.X, (int)points[i].Point.Y);
                CvInvoke.Circle(image, tmpPoint, 1, new MCvScalar(0, 0, 255));
            }

            this.picTarget.LoadImage(image.ToBitmap());
        }
Beispiel #2
0
        public MKeyPoint[] DetectKeyPoints(IInputArray image)
        {
            MKeyPoint[] result;
            result = _fast.Detect(image);

            return(result);
        }
Beispiel #3
0
        private void opticalFlow()
        {
            var a = new MCvTermCriteria(100);

            byte[]   status2;
            float[]  errors2;
            PointF[] corners2;
            var      vectors2  = vector2Point(vectors);
            var      keypoints = fastDetector.Detect(inputGrayImage, null);
            var      corners   = new VectorOfKeyPoint(keypoints);

            corners2 = vector2Point(corners);

            CvInvoke.CalcOpticalFlowPyrLK(inputGrayImagePrevious, inputGrayImage, vectors2, new Size(10, 10), 3, a, out corners2, out status2, out errors2);
            var matches = countNonZero(status2);

            labelStatus.Text = "Found =" + Convert.ToString(matches);
            labelTotal.Text  = "Total =" + Convert.ToString(errors2.Count());
        }
Beispiel #4
0
        static void Main(string[] args)
        {
            VectorOfKeyPoint modelKeyPoints, observedKeyPoints = new VectorOfKeyPoint();
            Mat img0 = new Mat(@"D:\Desktop\SI4\testImg0.jpg");
            Mat img1 = new Mat(@"D:\Desktop\SI4\testImg1.jpg");
            VectorOfVectorOfDMatch vectorOfDMatch = new VectorOfVectorOfDMatch();
            FastDetector           fd             = new FastDetector();

            MKeyPoint[] points0 = fd.Detect(img0);
            MKeyPoint[] points1 = fd.Detect(img1);
            Console.WriteLine(points0.Length);
            Console.WriteLine(points1.Length);
            MKeyPoint[] points2 = fd.Detect(img1, img0);
            Console.WriteLine(points2.Length);
            SIFT   sift        = new SIFT();
            GpuMat outputArray = new GpuMat();

            sift.DetectAndCompute(img0, img1, new VectorOfKeyPoint(points2), outputArray, false);
        }
Beispiel #5
0
        static void Main(string[] args)
        {
            var image      = new Image <Bgr, byte>("RGB.jpg").Resize(0.4, Inter.Area);
            var image_gray = image.Convert <Gray, byte>();
            //CvInvoke.CvtColor(image, image_gray, ColorConversion.Bgr2Gray);

            var fastDetector = new FastDetector(80);
            //var keyPoints = new VectorOfKeyPoint();
            var descriptors = new UMat();
            //fastDetector.DetectAndCompute(image_gray, null, keyPoints, descriptors, false);
            //Features2DToolbox.DrawKeypoints(image, keyPoints, image, new Bgr(255, 255, 0), Features2DToolbox.KeypointDrawType.DrawRichKeypoints);
            var keyPoints = fastDetector.Detect(image_gray);

            foreach (var point in keyPoints)
            {
                CvInvoke.Circle(image, new Point((int)point.Point.X, (int)point.Point.Y), 1, new MCvScalar(0, 0, 255, 255), 2);
            }
            CvInvoke.Imshow("result", image);
            CvInvoke.WaitKey();
        }