diff --git a/src/image.c b/src/image.c index ac495292..8497032a 100644 --- a/src/image.c +++ b/src/image.c @@ -201,7 +201,7 @@ void rgbgr_image(image im) } #ifdef OPENCV -void show_image_cv(image p, char *name) +void show_image_cv(image p, const char *name) { int x,y,k; image copy = copy_image(p); @@ -244,7 +244,7 @@ void show_image_cv(image p, char *name) } #endif -void show_image(image p, char *name) +void show_image(image p, const char *name) { #ifdef OPENCV show_image_cv(p, name); @@ -254,7 +254,7 @@ void show_image(image p, char *name) #endif } -void save_image(image im, char *name) +void save_image(image im, const char *name) { char buff[256]; //sprintf(buff, "%s (%d)", name, windows); diff --git a/src/image.h b/src/image.h index e16d2854..336cfa19 100644 --- a/src/image.h +++ b/src/image.h @@ -43,8 +43,8 @@ image collapse_image_layers(image source, int border); image collapse_images_horz(image *ims, int n); image collapse_images_vert(image *ims, int n); -void show_image(image p, char *name); -void save_image(image p, char *name); +void show_image(image p, const char *name); +void save_image(image p, const char *name); void show_images(image *ims, int n, char *window); void show_image_layers(image p, char *name); void show_image_collapsed(image p, char *name); diff --git a/src/yolo.c b/src/yolo.c index 7da69f70..80d85af5 100644 --- a/src/yolo.c +++ b/src/yolo.c @@ -21,7 +21,7 @@ void draw_yolo(image im, int num, float thresh, box *boxes, float **probs) float prob = probs[i][class]; if(prob > thresh){ int width = pow(prob, 1./2.)*10+1; - //width = 8; + width = 8; printf("%s: %.2f\n", voc_names[class], prob); class = class * 7 % 20; float red = get_color(0,class,classes); @@ -427,14 +427,18 @@ void demo_swag(char *cfgfile, char *weightfile, float thresh){} #endif */ -void demo_yolo(char *cfgfile, char *weightfile, float thresh); +void demo_yolo(char *cfgfile, char *weightfile, float thresh, int cam_index); #ifndef GPU -void demo_yolo(char *cfgfile, char *weightfile, float thresh){} +void demo_yolo(char *cfgfile, char *weightfile, float thresh, int cam_index) +{ + fprintf(stderr, "Darknet must be compiled with CUDA for YOLO demo.\n"); +} #endif void run_yolo(int argc, char **argv) { float thresh = find_float_arg(argc, argv, "-thresh", .2); + int cam_index = find_int_arg(argc, argv, "-c", 0); if(argc < 4){ fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); return; @@ -447,5 +451,5 @@ void run_yolo(int argc, char **argv) else if(0==strcmp(argv[2], "train")) train_yolo(cfg, weights); else if(0==strcmp(argv[2], "valid")) validate_yolo(cfg, weights); else if(0==strcmp(argv[2], "recall")) validate_yolo_recall(cfg, weights); - else if(0==strcmp(argv[2], "demo")) demo_yolo(cfg, weights, thresh); + else if(0==strcmp(argv[2], "demo")) demo_yolo(cfg, weights, thresh, cam_index); } diff --git a/src/yolo_kernels.cu b/src/yolo_kernels.cu index a0ff5f76..86cdc53e 100644 --- a/src/yolo_kernels.cu +++ b/src/yolo_kernels.cu @@ -61,7 +61,7 @@ void *detect_in_thread(void *ptr) return 0; } -extern "C" void demo_yolo(char *cfgfile, char *weightfile, float thresh) +extern "C" void demo_yolo(char *cfgfile, char *weightfile, float thresh, int cam_index) { printf("YOLO demo\n"); net = parse_network_cfg(cfgfile); @@ -72,7 +72,7 @@ extern "C" void demo_yolo(char *cfgfile, char *weightfile, float thresh) srand(2222222); - cv::VideoCapture cam(0); + cv::VideoCapture cam(cam_index); cap = cam; if(!cap.isOpened()) error("Couldn't connect to webcam.\n"); @@ -118,7 +118,7 @@ extern "C" void demo_yolo(char *cfgfile, char *weightfile, float thresh) } } #else -extern "C" void demo_yolo(char *cfgfile, char *weightfile, float thresh){ +extern "C" void demo_yolo(char *cfgfile, char *weightfile, float thresh, int cam_index){ fprintf(stderr, "YOLO demo needs OpenCV for webcam images.\n"); } #endif