Я пытаюсь рассчитать время, которое требуется моей программе для обнаружения ключевых точек на изображении. Если в моей программе на С++ я делаю это два раза (с одним и тем же изображением), между ними будет огромная разница. В первый раз он использует около 600-800 мс, а во второй раз всего 100-200 мс.
Кто-нибудь знает, что происходит?
Вот код, где я получаю время:
struct timeval t1, t2;
Ptr<SURF> detector = SURF::create(400);
gettimeofday(&t1, 0x0);
detector->detect( imagen1, keypoints_1 );
gettimeofday(&t2, 0x0);
int milliSeconds = Utils::calculateDiff(t1, t2);
Вот код, в котором я вычисляю разницу:
static int calculateDiff(timeval t1, timeval t2)
{
return (t2.tv_sec - t1.tv_sec) * 1000 + (t2.tv_usec - t1.tv_usec)/1000;
}
Вот пример:
cv::Mat imagen2 = imagen1.clone();
потребуется ли100-200 ms
или600-800 ms
для обнаружения? Не уверен, запоминает ли openCVintegral images
, вычисленный SURF-Detector, до тех пор, пока входное изображение не будет освобождено или что-то в этом роде... - person Micka   schedule 20.11.2014600-800 ms
и второе изображение100-200 ms
. Может быть, с помощьюdetector->detect(..)
инициализировать что-то внутри детектора? - person DavidGSola   schedule 20.11.2014100-200ms
и первый600-800ms
- person DavidGSola   schedule 20.11.2014100-200 ms
, независимо от того, тот же детектор или новый при каждом вызове. - person DavidGSola   schedule 20.11.2014