본문 바로가기

CLASS

[소스] 알고리즘별 수행시간 측정 stopWatch() 함수

알고리즘별 수행시간 측정 할 때 유용한 stopWatch() 함수입니다. 아래 소스를 맨위에 추가한 후 측정하고자 하는 알고리즘 시작할 때 한번, 종료할 때 한번 호출해주면 됩니다.

// 시간 측정 함수 소스
void stopWatch()
{
  static double time = 0.0;
  static bool bCheckTime = false;
  static int timerCount = 0;

  if( !bCheckTime ) {
    time = (double)getTickCount();
    timerCount++;
  }

  if( bCheckTime ) {
    time = ((double)getTickCount() - time) / getTickFrequency();
    cout << "Time" << timerCount << ": " << time << " sec" << endl;
  }

  bCheckTime = !bCheckTime;
}


OpenCV 로 BRIEF 와 SURF 를 돌려보았습니다. 콘솔에 아래와 같이 찍힙니다.



사용법은 아래와 같습니다.

 // detecting keypoints
 SurfFeatureDetector detector(5000);
 vector<KeyPoint> keypoints1, keypoints2;
 stopWatch();
 detector.detect(img1, keypoints1);
 detector.detect(img2, keypoints2);
 stopWatch();

 // computing descriptors
 SurfDescriptorExtractor extractor;
 Mat descriptors1, descriptors2;
 stopWatch();
 extractor.compute(img1, keypoints1, descriptors1);
 extractor.compute(img2, keypoints2, descriptors2);
 stopWatch();

 // matching descriptors
 BruteForceMatcher<L2<float> > matcher;
 vector<DMatch> matches;
 stopWatch();
 match(keypoints1, keypoints2, matcher, descriptors1, descriptors2, matches);
 stopWatch();