@@ -18,59 +18,59 @@ public Operator(int i_w, int i_h, int r_h)
18
18
Img_Height = i_h ;
19
19
Roi_Height = r_h ;
20
20
}
21
- public void FindMiddleByPath ( string url )
22
- {
23
- Image < Bgr , byte > img = new Image < Bgr , byte > ( url ) ;
24
- List < LineSegment2D > positiveLines = new List < LineSegment2D > ( ) ;
25
- List < LineSegment2D > negativeLines = new List < LineSegment2D > ( ) ;
26
- LineHelper helper = new LineHelper ( Img_Height , Img_Width , Roi_Height ) ;
21
+ // public void FindMiddleByPath(string url)
22
+ // {
23
+ // Image<Bgr, byte> img = new Image<Bgr, byte>(url);
24
+ // List<LineSegment2D> positiveLines = new List<LineSegment2D>();
25
+ // List<LineSegment2D> negativeLines = new List<LineSegment2D>();
26
+ // LineHelper helper = new LineHelper(Img_Height,Img_Width,Roi_Height);
27
27
28
- //store all the possible lines
29
- List < LineSegment2D > lines = helper . ExtractContour ( img , out temp ) ;
28
+ // //store all the possible lines
29
+ // List<LineSegment2D> lines = helper.ExtractContour(img,out temp);
30
30
31
- //divide the lines into two parts.
32
- foreach ( LineSegment2D line in lines )
33
- {
34
- float theta = line . Direction . Y / line . Direction . X ;
35
- if ( theta > 0 ) { positiveLines . Add ( line ) ; }
36
- else if ( theta < 0 ) { negativeLines . Add ( line ) ; }
37
- }
31
+ // //divide the lines into two parts.
32
+ // foreach (LineSegment2D line in lines)
33
+ // {
34
+ // float theta = line.Direction.Y / line.Direction.X;
35
+ // if (theta > 0) { positiveLines.Add(line); }
36
+ // else if (theta < 0) { negativeLines.Add(line); }
37
+ // }
38
38
39
- //find the average line of two groups above
40
- if ( positiveLines . Count == 0 ) throw new TextException ( "No negative Line, Try look right!" ) ;
41
- if ( negativeLines . Count == 0 ) throw new TextException ( "No positive Line,Try look left!" ) ;
42
- LineSegment2DF posline = helper . AvrageLine ( positiveLines ) ;
43
- LineSegment2DF negline = helper . AvrageLine ( negativeLines ) ;
39
+ // //find the average line of two groups above
40
+ // if (positiveLines.Count == 0) throw new TextException("No negative Line, Try look right!");
41
+ // if (negativeLines.Count==0) throw new TextException("No positive Line,Try look left!");
42
+ // LineSegment2DF posline = helper.AvrageLine(positiveLines);
43
+ // LineSegment2DF negline = helper.AvrageLine(negativeLines);
44
44
45
- //draw two average lines.
46
- temp . Draw ( posline , new Bgr ( 0 , 255 , 0 ) , 5 ) ;
47
- temp . Draw ( negline , new Bgr ( 0 , 255 , 0 ) , 5 ) ;
45
+ // //draw two average lines.
46
+ // temp.Draw(posline, new Bgr(0, 255, 0), 5);
47
+ // temp.Draw(negline, new Bgr(0, 255, 0), 5);
48
48
49
- //Find and draw the vanishing point
50
- PointF crosspt = helper . GetIntersection ( ref posline , ref negline ) ;
51
- if ( crosspt . Y > 140 ) throw new TextException ( "Near Corner" ) ;
52
- temp . Draw ( new CircleF ( crosspt , 3 ) , new Bgr ( 0 , 0 , 255 ) , 5 ) ;
49
+ // //Find and draw the vanishing point
50
+ // PointF crosspt = helper.GetIntersection(ref posline, ref negline);
51
+ // if (crosspt.Y > 140) throw new TextException("Near Corner");
52
+ // temp.Draw(new CircleF(crosspt, 3), new Bgr(0, 0, 255), 5);
53
53
54
- //Find the bisector
55
- float i = 0 ;
56
- for ( i = 0 ; i < 640 ; i ++ )
57
- {
58
- PointF pt = new PointF ( i , Roi_Height ) ;
59
- if ( Math . Abs ( helper . GetDist ( pt , posline ) - helper . GetDist ( pt , negline ) ) < 1 )
60
- break ;
61
- }
62
- LineSegment2DF middleline = new LineSegment2DF ( crosspt , new PointF ( i , 280 ) ) ;
54
+ // //Find the bisector
55
+ // float i = 0;
56
+ // for (i = 0; i < 640; i++)
57
+ // {
58
+ // PointF pt = new PointF(i, Roi_Height);
59
+ // if (Math.Abs(helper.GetDist(pt, posline) - helper.GetDist(pt, negline)) < 1)
60
+ // break;
61
+ // }
62
+ // LineSegment2DF middleline = new LineSegment2DF(crosspt, new PointF(i, 280));
63
63
64
- #region test bisector
65
- //double angle1, angle2;
66
- //angle1 = middleline.GetExteriorAngleDegree(posline);
67
- //angle2 = middleline.GetExteriorAngleDegree(negline);
68
- //double angle3 = posline.GetExteriorAngleDegree(negline);
69
- #endregion
70
- temp . Draw ( middleline , new Bgr ( 0 , 0 , 255 ) , 5 ) ;
71
- temp . Save ( "D:\\ temp\\ lines.jpg" ) ;
72
- }
73
- public void FindMiddleByImg ( Image < Bgr , byte > img )
64
+ // #region test bisector
65
+ // //double angle1, angle2;
66
+ // //angle1 = middleline.GetExteriorAngleDegree(posline);
67
+ // //angle2 = middleline.GetExteriorAngleDegree(negline);
68
+ // //double angle3 = posline.GetExteriorAngleDegree(negline);
69
+ // #endregion
70
+ // temp.Draw(middleline, new Bgr(0, 0, 255), 5);
71
+ // temp.Save("D:\\temp\\lines.jpg");
72
+ // }
73
+ public string FindMiddleByImg ( Image < Bgr , byte > img )
74
74
{
75
75
List < LineSegment2D > positiveLines = new List < LineSegment2D > ( ) ;
76
76
List < LineSegment2D > negativeLines = new List < LineSegment2D > ( ) ;
@@ -88,25 +88,25 @@ public void FindMiddleByImg(Image<Bgr, byte> img)
88
88
}
89
89
90
90
//find the average line of two groups above
91
- if ( positiveLines . Count == 0 ) throw new TextException ( "No negative Line, Try look right!" ) ;
92
- if ( negativeLines . Count == 0 ) throw new TextException ( "No positive Line,Try look left!" ) ;
91
+ if ( positiveLines . Count == 0 ) return "No negative Line, Try look right!" ;
92
+ if ( negativeLines . Count == 0 ) return "No positive Line,Try look left!" ;
93
93
LineSegment2DF posline = helper . AvrageLine ( positiveLines ) ;
94
94
LineSegment2DF negline = helper . AvrageLine ( negativeLines ) ;
95
95
96
96
//draw two average lines.
97
- // temp.Draw(posline, new Bgr(0, 255, 0), 5);
98
- // temp.Draw(negline, new Bgr(0, 255, 0), 5);
97
+ temp . Draw ( posline , new Bgr ( 0 , 255 , 0 ) , 5 ) ;
98
+ temp . Draw ( negline , new Bgr ( 0 , 255 , 0 ) , 5 ) ;
99
99
100
100
//Find and draw the vanishing point
101
101
PointF crosspt = helper . GetIntersection ( ref posline , ref negline ) ;
102
- if ( crosspt . Y > 140 ) throw new TextException ( "Near Corner" ) ;
102
+ if ( crosspt . Y > 140 ) return "Near Corner" ;
103
103
//temp.Draw(new CircleF(crosspt, 3), new Bgr(0, 0, 255), 5);
104
-
104
+ PointF pt = new PointF ( 0 , Roi_Height ) ;
105
105
//Find the bisector
106
106
float i = 0 ;
107
107
for ( i = 0 ; i < 640 ; i ++ )
108
108
{
109
- PointF pt = new PointF ( i , Roi_Height ) ;
109
+ pt = new PointF ( i , Roi_Height ) ;
110
110
if ( Math . Abs ( helper . GetDist ( pt , posline ) - helper . GetDist ( pt , negline ) ) < 1 )
111
111
break ;
112
112
}
@@ -119,6 +119,10 @@ public void FindMiddleByImg(Image<Bgr, byte> img)
119
119
//double angle3 = posline.GetExteriorAngleDegree(negline);
120
120
#endregion
121
121
temp . Draw ( middleline , new Bgr ( 0 , 0 , 255 ) , 5 ) ;
122
+ if ( pt . X < 220 && pt . X > 0 ) return "Turn Left" ;
123
+ else if ( pt . X >= 220 && pt . X < 420 ) return "Go Straight" ;
124
+ else if ( pt . X >= 420 && pt . X <= 640 ) return "Turn Right" ;
125
+ else return "No Sense" ;
122
126
//temp.Save("D:\\temp\\lines.jpg");
123
127
}
124
128
public Image < Bgr , byte > GetRoadImg ( )
0 commit comments