1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
   | void test_detector(char *datacfg, char *cfgfile, char *weightfile, char *filename, float thresh, float hier_thresh, char *outfile, int fullscreen) {     list *options = read_data_cfg(datacfg);     char *name_list = option_find_str(options, "names", "data/names.list");     char **names = get_labels(name_list);       image **alphabet = load_alphabet();     network *net = load_network(cfgfile, weightfile, 0);     set_batch_network(net, 1);     srand(2222222);     double time;     char buff[256];     char *input = buff;     float nms=.45;     int i=0;     while(1){         if(filename){             strncpy(input, filename, 256);             image im = load_image_color(input,0,0);             image sized = letterbox_image(im, net->w, net->h);             layer l = net->layers[net->n-1];                 float *X = sized.data;             time=what_time_is_it_now();             network_predict(net, X);             printf("%s: Predicted in %f seconds.\n", input, what_time_is_it_now()-time);             int nboxes = 0;             detection *dets = get_network_boxes(net, im.w, im.h, thresh, hier_thresh, 0, 1, &nboxes);             if (nms) do_nms_sort(dets, nboxes, l.classes, nms);                 draw_detections(im, dets, nboxes, thresh, names, alphabet, l.classes);                 free_detections(dets, nboxes);             if(outfile)              {                 save_image(im, outfile);              }             else{                 save_image(im, "predictions"); #ifdef OPENCV                 cvNamedWindow("predictions", CV_WINDOW_NORMAL);                  if(fullscreen){                 cvSetWindowProperty("predictions", CV_WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN);                 }                 show_image(im, "predictions",0);                 cvWaitKey(0);                 cvDestroyAllWindows(); #endif             }             free_image(im);             free_image(sized);             if (filename) break;          }          else {             printf("Enter Image Path: ");             fflush(stdout);             input = fgets(input, 256, stdin);             if(!input) return;             strtok(input, "\n");                 list *plist = get_paths(input);             char **paths = (char **)list_to_array(plist);              printf("Start Testing!\n");             int m = plist->size;             if(access("/home/lzm/data/test_folder/darknet/car_person/out",0)==-1)             {               if (mkdir("/home/lzm/data/test_folder/darknet/car_person/out",0777))                {                  printf("creat folder failed!!!");                }             }             for(i = 0; i < m; ++i){              char *path = paths[i];              image im = load_image_color(path,0,0);              image sized = letterbox_image(im, net->w, net->h);                                             layer l = net->layers[net->n-1];             float *X = sized.data;         time=what_time_is_it_now();         network_predict(net, X);         printf("Try Very Hard:");         printf("%s: Predicted in %f seconds.\n", path, what_time_is_it_now()-time);         int nboxes = 0;         detection *dets = get_network_boxes(net, im.w, im.h, thresh, hier_thresh, 0, 1, &nboxes);                           if (nms) do_nms_sort(dets, nboxes, l.classes, nms);         draw_detections(im, dets, nboxes, thresh, names, alphabet, l.classes);         free_detections(dets, nboxes);         if(outfile){             save_image(im, outfile);         }         else{                            char b[2048];             sprintf(b,"/home/lzm/data/test_folder/darknet/car_person/out/%s",GetFilename(path));                          save_image(im, b);             printf("OJBK!\n",GetFilename(path)); #ifdef OPENCV             cvNamedWindow("predictions", CV_WINDOW_NORMAL);              if(fullscreen){                 cvSetWindowProperty("predictions", CV_WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN);             }             show_image(im, "predictions",0);             cvWaitKey(0);             cvDestroyAllWindows(); #endif         }           free_image(im);         free_image(sized);         if (filename) break;         }       }     } }
   |