@@ -54,7 +54,7 @@ int main(int argc, char** argv)
54
54
vector<Vec4f> lines;
55
55
56
56
// Because of some CPU's power strategy, it seems that the first running of
57
- // an algorithm takes much longer. So here we run the algorithm 10 times
57
+ // an algorithm takes much longer. So here we run the algorithm 5 times
58
58
// to see the algorithm's processing time with sufficiently warmed-up
59
59
// CPU performance.
60
60
for (int run_count = 0 ; run_count < 5 ; run_count++) {
@@ -71,64 +71,7 @@ int main(int argc, char** argv)
71
71
Mat line_image_fld (image);
72
72
fld->drawSegments (line_image_fld, lines);
73
73
imshow (" FLD result" , line_image_fld);
74
-
75
- waitKey (1 );
76
-
77
- Ptr <EdgeDrawing> ed = createEdgeDrawing ();
78
- ed->params .EdgeDetectionOperator = EdgeDrawing::SOBEL;
79
- ed->params .GradientThresholdValue = 38 ;
80
- ed->params .AnchorThresholdValue = 8 ;
81
-
82
- vector<Vec6d> ellipses;
83
-
84
- for (int run_count = 0 ; run_count < 5 ; run_count++) {
85
- double freq = getTickFrequency ();
86
- lines.clear ();
87
- int64 start = getTickCount ();
88
-
89
- // Detect edges
90
- // you should call this before detectLines() and detectEllipses()
91
- ed->detectEdges (image);
92
-
93
- // Detect lines
94
- ed->detectLines (lines);
95
- double duration_ms = double (getTickCount () - start) * 1000 / freq;
96
- cout << " Elapsed time for EdgeDrawing detectLines " << duration_ms << " ms." << endl;
97
-
98
- start = getTickCount ();
99
- // Detect circles and ellipses
100
- ed->detectEllipses (ellipses);
101
- duration_ms = double (getTickCount () - start) * 1000 / freq;
102
- cout << " Elapsed time for EdgeDrawing detectEllipses " << duration_ms << " ms." << endl;
103
- }
104
-
105
- Mat edge_image_ed = Mat::zeros (image.size (), CV_8UC3);
106
- vector<vector<Point > > segments = ed->getSegments ();
107
-
108
- for (size_t i = 0 ; i < segments.size (); i++)
109
- {
110
- const Point * pts = &segments[i][0 ];
111
- int n = (int )segments[i].size ();
112
- polylines (edge_image_ed, &pts, &n, 1 , false , Scalar ((rand () & 255 ), (rand () & 255 ), (rand () & 255 )), 1 );
113
- }
114
-
115
- imshow (" EdgeDrawing detected edges" , edge_image_ed);
116
-
117
- Mat line_image_ed (image);
118
- fld->drawSegments (line_image_ed, lines);
119
-
120
- // Draw circles and ellipses
121
- for (size_t i = 0 ; i < ellipses.size (); i++)
122
- {
123
- Point center ((int )ellipses[i][0 ], (int )ellipses[i][1 ]);
124
- Size axes ((int )ellipses[i][2 ] + (int )ellipses[i][3 ], (int )ellipses[i][2 ] + (int )ellipses[i][4 ]);
125
- double angle (ellipses[i][5 ]);
126
- Scalar color = ellipses[i][2 ] == 0 ? Scalar (255 , 255 , 0 ) : Scalar (0 , 255 , 0 );
127
-
128
- ellipse (line_image_ed, center, axes, angle, 0 , 360 , color, 2 , LINE_AA);
129
- }
130
-
131
- imshow (" EdgeDrawing result" , line_image_ed);
132
74
waitKey ();
75
+
133
76
return 0 ;
134
77
}
0 commit comments