@@ -100,7 +100,7 @@ void MouseTracking(int argc, char** argv)
100100 cv::VideoWriter writer;
101101
102102 int k = 0 ;
103- cv::Scalar Colors[] = { cv::Scalar (255 , 0 , 0 ), cv::Scalar (0 , 255 , 0 ), cv::Scalar (0 , 0 , 255 ), cv::Scalar (255 , 255 , 0 ), cv::Scalar (0 , 255 , 255 ), cv::Scalar (255 , 255 , 255 ) };
103+ std::vector< cv::Scalar> colors = { cv::Scalar (255 , 0 , 0 ), cv::Scalar (0 , 255 , 0 ), cv::Scalar (0 , 0 , 255 ), cv::Scalar (255 , 255 , 0 ), cv::Scalar (0 , 255 , 255 ), cv::Scalar (255 , 0 , 255 ), cv::Scalar ( 255 , 127 , 255 ), cv::Scalar ( 127 , 0 , 255 ), cv::Scalar ( 127 , 0 , 127 ) };
104104 cv::namedWindow (" Video" );
105105 cv::Mat frame = cv::Mat (800 , 800 , CV_8UC3);
106106
@@ -158,7 +158,7 @@ void MouseTracking(int argc, char** argv)
158158 {
159159 for (size_t j = 0 ; j < tracks->m_trace .size () - 1 ; j++)
160160 {
161- cv::line (frame, tracks->m_trace [j], tracks->m_trace [j + 1 ], Colors [i % 6 ], 2 , CV_AA);
161+ cv::line (frame, tracks->m_trace [j], tracks->m_trace [j + 1 ], colors [i % colors. size () ], 2 , CV_AA);
162162 }
163163 }
164164 }
@@ -174,6 +174,29 @@ void MouseTracking(int argc, char** argv)
174174 }
175175}
176176
177+ // ----------------------------------------------------------------------
178+ void DrawTrack (cv::Mat frame,
179+ const CTrack& track,
180+ const std::vector<cv::Scalar>& colors
181+ )
182+ {
183+ cv::rectangle (frame, track.GetLastRect (), cv::Scalar (0 , 255 , 0 ), 1 , CV_AA);
184+
185+ cv::Scalar cl = colors[track.m_trackID % colors.size ()];
186+
187+ for (size_t j = 0 ; j < track.m_trace .size () - 1 ; ++j)
188+ {
189+ const TrajectoryPoint& pt1 = track.m_trace .at (j);
190+ const TrajectoryPoint& pt2 = track.m_trace .at (j + 1 );
191+
192+ cv::line (frame, pt1.m_prediction , pt2.m_prediction , cl, 1 , CV_AA);
193+ if (!pt2.m_hasRaw )
194+ {
195+ cv::circle (frame, pt2.m_prediction , 4 , cl, 1 , CV_AA);
196+ }
197+ }
198+ }
199+
177200// ----------------------------------------------------------------------
178201void MotionDetector (int argc, char ** argv)
179202{
@@ -192,7 +215,7 @@ void MotionDetector(int argc, char** argv)
192215
193216 cv::VideoWriter writer;
194217
195- cv::Scalar Colors[] = { cv::Scalar (255 , 0 , 0 ), cv::Scalar (0 , 255 , 0 ), cv::Scalar (0 , 0 , 255 ), cv::Scalar (255 , 255 , 0 ), cv::Scalar (0 , 255 , 255 ), cv::Scalar (255 , 0 , 255 ), cv::Scalar (255 , 127 , 255 ), cv::Scalar (127 , 0 , 255 ), cv::Scalar (127 , 0 , 127 ) };
218+ std::vector< cv::Scalar> colors = { cv::Scalar (255 , 0 , 0 ), cv::Scalar (0 , 255 , 0 ), cv::Scalar (0 , 0 , 255 ), cv::Scalar (255 , 255 , 0 ), cv::Scalar (0 , 255 , 255 ), cv::Scalar (255 , 0 , 255 ), cv::Scalar (255 , 127 , 255 ), cv::Scalar (127 , 0 , 255 ), cv::Scalar (127 , 0 , 127 ) };
196219 cv::VideoCapture capture (inFile);
197220 if (!capture.isOpened ())
198221 {
@@ -214,7 +237,7 @@ void MotionDetector(int argc, char** argv)
214237 // But on high resolution videos with many objects may be to slow
215238 bool useLocalTracking = true ;
216239
217- CDetector detector (BackgroundSubtract::ALG_CNT , useLocalTracking, gray);
240+ CDetector detector (BackgroundSubtract::ALG_MOG , useLocalTracking, gray);
218241 detector.SetMinObjectSize (cv::Size (gray.cols / 50 , gray.rows / 50 ));
219242 // detector.SetMinObjectSize(cv::Size(2, 2));
220243
@@ -277,18 +300,7 @@ void MotionDetector(int argc, char** argv)
277300 cv::Size2f (0 .5f , 4 .0f )) // Min and max ratio: width / height
278301 )
279302 {
280- cv::rectangle (frame, track->GetLastRect (), cv::Scalar (0 , 255 , 0 ), 1 , CV_AA);
281-
282- cv::Scalar cl = Colors[track->m_trackID % 9 ];
283-
284- for (size_t j = 0 ; j < track->m_trace .size () - 1 ; ++j)
285- {
286- cv::line (frame, track->m_trace [j], track->m_trace [j + 1 ], cl, 1 , CV_AA);
287- if (!track->m_trace .HasRaw (j + 1 ))
288- {
289- cv::circle (frame, track->m_trace [j + 1 ], 4 , cl, 1 , CV_AA);
290- }
291- }
303+ DrawTrack (frame, *track, colors);
292304 }
293305 }
294306
@@ -342,7 +354,7 @@ void FaceDetector(int argc, char** argv)
342354
343355 cv::VideoWriter writer;
344356
345- cv::Scalar Colors[] = { cv::Scalar (255 , 0 , 0 ), cv::Scalar (0 , 255 , 0 ), cv::Scalar (0 , 0 , 255 ), cv::Scalar (255 , 255 , 0 ), cv::Scalar (0 , 255 , 255 ), cv::Scalar (255 , 0 , 255 ), cv::Scalar (255 , 127 , 255 ), cv::Scalar (127 , 0 , 255 ), cv::Scalar (127 , 0 , 127 ) };
357+ std::vector< cv::Scalar> colors = { cv::Scalar (255 , 0 , 0 ), cv::Scalar (0 , 255 , 0 ), cv::Scalar (0 , 0 , 255 ), cv::Scalar (255 , 255 , 0 ), cv::Scalar (0 , 255 , 255 ), cv::Scalar (255 , 0 , 255 ), cv::Scalar (255 , 127 , 255 ), cv::Scalar (127 , 0 , 255 ), cv::Scalar (127 , 0 , 127 ) };
346358 cv::VideoCapture capture (inFile);
347359 if (!capture.isOpened ())
348360 {
@@ -445,18 +457,7 @@ void FaceDetector(int argc, char** argv)
445457 cv::Size2f (0 .1f , 8 .0f )) // Min and max ratio: width / height
446458 )
447459 {
448- cv::rectangle (frame, track->GetLastRect (), cv::Scalar (0 , 255 , 0 ), 1 , CV_AA);
449-
450- cv::Scalar cl = Colors[track->m_trackID % 9 ];
451-
452- for (size_t j = 0 ; j < track->m_trace .size () - 1 ; ++j)
453- {
454- cv::line (frame, track->m_trace [j], track->m_trace [j + 1 ], cl, 1 , CV_AA);
455- if (!track->m_trace .HasRaw (j + 1 ))
456- {
457- cv::circle (frame, track->m_trace [j + 1 ], 4 , cl, 1 , CV_AA);
458- }
459- }
460+ DrawTrack (frame, *track, colors);
460461 }
461462 }
462463
@@ -504,7 +505,7 @@ void PedestrianDetector(int argc, char** argv)
504505
505506 cv::VideoWriter writer;
506507
507- cv::Scalar Colors[] = { cv::Scalar (255 , 0 , 0 ), cv::Scalar (0 , 255 , 0 ), cv::Scalar (0 , 0 , 255 ), cv::Scalar (255 , 255 , 0 ), cv::Scalar (0 , 255 , 255 ), cv::Scalar (255 , 0 , 255 ), cv::Scalar (255 , 127 , 255 ), cv::Scalar (127 , 0 , 255 ), cv::Scalar (127 , 0 , 127 ) };
508+ std::vector< cv::Scalar> colors = { cv::Scalar (255 , 0 , 0 ), cv::Scalar (0 , 255 , 0 ), cv::Scalar (0 , 0 , 255 ), cv::Scalar (255 , 255 , 0 ), cv::Scalar (0 , 255 , 255 ), cv::Scalar (255 , 0 , 255 ), cv::Scalar (255 , 127 , 255 ), cv::Scalar (127 , 0 , 255 ), cv::Scalar (127 , 0 , 127 ) };
508509 cv::VideoCapture capture (inFile);
509510 if (!capture.isOpened ())
510511 {
@@ -625,18 +626,7 @@ void PedestrianDetector(int argc, char** argv)
625626 cv::Size2f (0 .1f , 8 .0f )) // Min and max ratio: width / height
626627 )
627628 {
628- cv::rectangle (frame, track->GetLastRect (), cv::Scalar (0 , 255 , 0 ), 1 , CV_AA);
629-
630- cv::Scalar cl = Colors[track->m_trackID % 9 ];
631-
632- for (size_t j = 0 ; j < track->m_trace .size () - 1 ; ++j)
633- {
634- cv::line (frame, track->m_trace [j], track->m_trace [j + 1 ], cl, 1 , CV_AA);
635- if (!track->m_trace .HasRaw (j + 1 ))
636- {
637- cv::circle (frame, track->m_trace [j + 1 ], 4 , cl, 1 , CV_AA);
638- }
639- }
629+ DrawTrack (frame, *track, colors);
640630 }
641631 }
642632
0 commit comments