/////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //detect car-boundary-boxes RESULT *car_detection(IplImage *IM,MODEL *MO,double thresh,int *D_NUMS,double *A_SCORE,double overlap) { double *boxes = detect(IM,MO,thresh,D_NUMS,A_SCORE); //detect high-score region double *rects = nms(boxes,overlap,D_NUMS,MO); //get boundary-rectangles of car RESULT *CUR = get_new_rects(IM,MO,rects,D_NUMS); //get current result s_free(boxes); s_free(rects); return CUR; }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //detect car-boundary-boxes RESULT *car_detection(IplImage *IM,MODEL *MO,FLOAT thresh,int *D_NUMS,FLOAT *A_SCORE,FLOAT overlap) { /* for measurement */ struct timeval tv; struct timeval tv_detect_start, tv_detect_end; float time_detect; struct timeval tv_nms_start, tv_nms_end; float time_nms; struct timeval tv_get_new_rects_start, tv_get_new_rects_end; float time_get_new_rects; gettimeofday(&tv_detect_start, NULL); FLOAT *boxes = detect(IM,MO,thresh,D_NUMS,A_SCORE); //detect high-score region gettimeofday(&tv_detect_end, NULL); gettimeofday(&tv_nms_start, NULL); FLOAT *rects = nms(boxes,overlap,D_NUMS,MO); //get boundary-rectangles of car gettimeofday(&tv_nms_end, NULL); gettimeofday(&tv_get_new_rects_start, NULL); RESULT *CUR = get_new_rects(IM,MO,rects,D_NUMS); //get current result gettimeofday(&tv_get_new_rects_end, NULL); #if 0 tvsub(&tv_detect_end, &tv_detect_start, &tv); time_detect = tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; tvsub(&tv_nms_end, &tv_nms_start, &tv); time_nms = tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; tvsub(&tv_get_new_rects_end, &tv_get_new_rects_start, &tv); time_get_new_rects = tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; printf("detect : %f\n", time_detect); printf("nms : %f\n", time_nms); printf("get_new_rects : %f\n", time_get_new_rects); #endif s_free(boxes); s_free(rects); return CUR; }