Advertisement
Guest User

linedetection

a guest
Mar 9th, 2012
609
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.42 KB | None | 0 0
  1. public bool match()
  2.         {
  3.             IplImage image = new IplImage(ImagePath, LoadMode.Color);
  4.  
  5.             //Get ROI
  6.             IplImage image_roi = ToolboxImage.GetROIImage(image, _ROI);
  7.             IplImage image_draw = ToolboxImage.GetROIImage(image, _ROI);
  8.  
  9.             if (Display)
  10.             {
  11.                 Cv.NamedWindow("1");
  12.                 Cv.ShowImage("1", image_roi);
  13.                 Cv.WaitKey();
  14.             }
  15.             //Filtering colors
  16.             CvScalar HSV = ToolboxImage.RGBtoHSV(LineColor);
  17.             image_roi = ToolboxImage.FilterImageColor(image_roi, HSV);
  18.             if (Display)
  19.             {
  20.                 Cv.NamedWindow("2");
  21.                 Cv.ShowImage("2", image_roi);
  22.                 Cv.WaitKey();
  23.             }        
  24.  
  25.             //Storage
  26.             CvMemStorage storage = new CvMemStorage();
  27.  
  28.             //perform transformation
  29.             int lineSplit = 0;
  30.             if (Dashed)
  31.                 lineSplit = 10;
  32.  
  33.             CvSeq lines = image_roi.HoughLines2(storage, HoughLinesMethod.Probabilistic, 1, Math.PI / 180, 30, Length, lineSplit);
  34.  
  35.             for (int i = 0; i < lines.Total; i++)
  36.             {
  37.                 //Get first line
  38.                 CvLineSegmentPoint elem = lines.GetSeqElem<CvLineSegmentPoint>(i).Value;
  39.  
  40.                 //Convert to cartesian coordinates
  41.                 CvPoint p1 = CoorConverter(elem.P1, CoordinateConversion.PIXELCART);
  42.                 CvPoint p2 = CoorConverter(elem.P2, CoordinateConversion.PIXELCART);
  43.  
  44.                 //Get angle
  45.                 double angle = Math.Atan2(p2.Y - p1.Y, p2.X - p1.X) * 180 / Math.PI;
  46.                 if (angle < 0)
  47.                     angle = angle + 360;
  48.  
  49.                 //If angle is in allowed area
  50.                 if (angle < Angle + 5 && angle > Angle - 5)
  51.                 {
  52.                     image_draw.Line(elem.P1, elem.P2, CvColor.Red, 2, LineType.AntiAlias, 0);
  53.                     matchFound++;
  54.                     if (Display)
  55.                     {
  56.                         Cv.NamedWindow("Test" + 4 + i);
  57.                         Cv.ShowImage("Test" + 4 + i, image_draw);
  58.                         Cv.WaitKey();
  59.                     }
  60.                 }
  61.             }
  62.             if (Display)
  63.                 Cv.DestroyAllWindows();
  64.  
  65.             if (matchFound == 1)
  66.                 return true;
  67.             else
  68.                 return false;
  69.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement