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()); }
public MKeyPoint[] DetectKeyPoints(IInputArray image) { MKeyPoint[] result; result = _fast.Detect(image); return(result); }
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()); }
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); }
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(); }