Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public bool match()
- {
- IplImage image = new IplImage(ImagePath, LoadMode.Color);
- //Get ROI
- IplImage image_roi = ToolboxImage.GetROIImage(image, _ROI);
- IplImage image_draw = ToolboxImage.GetROIImage(image, _ROI);
- if (Display)
- {
- Cv.NamedWindow("1");
- Cv.ShowImage("1", image_roi);
- Cv.WaitKey();
- }
- //Filtering colors
- CvScalar HSV = ToolboxImage.RGBtoHSV(LineColor);
- image_roi = ToolboxImage.FilterImageColor(image_roi, HSV);
- if (Display)
- {
- Cv.NamedWindow("2");
- Cv.ShowImage("2", image_roi);
- Cv.WaitKey();
- }
- //Storage
- CvMemStorage storage = new CvMemStorage();
- //perform transformation
- int lineSplit = 0;
- if (Dashed)
- lineSplit = 10;
- CvSeq lines = image_roi.HoughLines2(storage, HoughLinesMethod.Probabilistic, 1, Math.PI / 180, 30, Length, lineSplit);
- for (int i = 0; i < lines.Total; i++)
- {
- //Get first line
- CvLineSegmentPoint elem = lines.GetSeqElem<CvLineSegmentPoint>(i).Value;
- //Convert to cartesian coordinates
- CvPoint p1 = CoorConverter(elem.P1, CoordinateConversion.PIXELCART);
- CvPoint p2 = CoorConverter(elem.P2, CoordinateConversion.PIXELCART);
- //Get angle
- double angle = Math.Atan2(p2.Y - p1.Y, p2.X - p1.X) * 180 / Math.PI;
- if (angle < 0)
- angle = angle + 360;
- //If angle is in allowed area
- if (angle < Angle + 5 && angle > Angle - 5)
- {
- image_draw.Line(elem.P1, elem.P2, CvColor.Red, 2, LineType.AntiAlias, 0);
- matchFound++;
- if (Display)
- {
- Cv.NamedWindow("Test" + 4 + i);
- Cv.ShowImage("Test" + 4 + i, image_draw);
- Cv.WaitKey();
- }
- }
- }
- if (Display)
- Cv.DestroyAllWindows();
- if (matchFound == 1)
- return true;
- else
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement