diff --git a/build/darknet/x64/darknet_coco_9000_demo.cmd b/build/darknet/x64/darknet_coco_9000_demo.cmd index 390d7d4b..9f7f1244 100644 --- a/build/darknet/x64/darknet_coco_9000_demo.cmd +++ b/build/darknet/x64/darknet_coco_9000_demo.cmd @@ -1,5 +1,5 @@ -darknet.exe detector demo cfg/combine9k.data yolo9000.cfg yolo9000.weights street4k.mp4 +darknet.exe detector demo cfg/combine9k.data yolo9000.cfg yolo9000.weights street4k.mp4 -out_filename res.avi diff --git a/build/darknet/x64/darknet_demo_coco.cmd b/build/darknet/x64/darknet_demo_coco.cmd index 8eb78099..d00f21ff 100644 --- a/build/darknet/x64/darknet_demo_coco.cmd +++ b/build/darknet/x64/darknet_demo_coco.cmd @@ -1,6 +1,6 @@ -darknet.exe detector demo data/coco.data yolo.cfg yolo.weights test.mp4 -i 0 +darknet.exe detector demo data/coco.data yolo.cfg yolo.weights test.mp4 -i 0 -out_filename res.avi pause \ No newline at end of file diff --git a/build/darknet/x64/darknet_demo_voc.cmd b/build/darknet/x64/darknet_demo_voc.cmd index cea032c1..4f9e0c21 100644 --- a/build/darknet/x64/darknet_demo_voc.cmd +++ b/build/darknet/x64/darknet_demo_voc.cmd @@ -1,4 +1,4 @@ -darknet.exe detector demo data/voc.data yolo-voc.cfg yolo-voc.weights test.mp4 -i 0 +darknet.exe detector demo data/voc.data yolo-voc.cfg yolo-voc.weights test.mp4 -i 0 -out_filename res.avi pause \ No newline at end of file diff --git a/build/darknet/x64/darknet_net_cam_coco.cmd b/build/darknet/x64/darknet_net_cam_coco.cmd index f6d4d873..17f1d15a 100644 --- a/build/darknet/x64/darknet_net_cam_coco.cmd +++ b/build/darknet/x64/darknet_net_cam_coco.cmd @@ -5,7 +5,7 @@ # # Replace the address below, on shown in the phone application -darknet.exe detector demo data/coco.data yolo.cfg yolo.weights http://192.168.0.80:8080/video?dummy=param.mjpg -i 0 +darknet.exe detector demo data/coco.data yolo.cfg yolo.weights http://192.168.0.80:8080/video?dummy=param.mjpg -i 0 -out_filename res.avi pause \ No newline at end of file diff --git a/build/darknet/x64/darknet_web_cam_voc.cmd b/build/darknet/x64/darknet_web_cam_voc.cmd index 57046ced..c072c84d 100644 --- a/build/darknet/x64/darknet_web_cam_voc.cmd +++ b/build/darknet/x64/darknet_web_cam_voc.cmd @@ -1,6 +1,6 @@ # play video from Web-Camera number 0 -darknet.exe detector demo data/voc.data yolo-voc.cfg yolo-voc.weights -c 0 +darknet.exe detector demo data/voc.data yolo-voc.cfg yolo-voc.weights -c 0 -out_filename res.avi pause \ No newline at end of file diff --git a/src/coco.c b/src/coco.c index f684feea..8bf5ee74 100644 --- a/src/coco.c +++ b/src/coco.c @@ -367,6 +367,7 @@ void test_coco(char *cfgfile, char *weightfile, char *filename, float thresh) void run_coco(int argc, char **argv) { + char *out_filename = find_char_arg(argc, argv, "-out_filename", 0); char *prefix = find_char_arg(argc, argv, "-prefix", 0); float thresh = find_float_arg(argc, argv, "-thresh", .2); int cam_index = find_int_arg(argc, argv, "-c", 0); @@ -384,5 +385,5 @@ void run_coco(int argc, char **argv) else if(0==strcmp(argv[2], "train")) train_coco(cfg, weights); else if(0==strcmp(argv[2], "valid")) validate_coco(cfg, weights); else if(0==strcmp(argv[2], "recall")) validate_coco_recall(cfg, weights); - else if(0==strcmp(argv[2], "demo")) demo(cfg, weights, thresh, cam_index, filename, coco_classes, 80, frame_skip, prefix); + else if(0==strcmp(argv[2], "demo")) demo(cfg, weights, thresh, cam_index, filename, coco_classes, 80, frame_skip, prefix, out_filename); } diff --git a/src/demo.c b/src/demo.c index 49e08c20..c88c1d98 100644 --- a/src/demo.c +++ b/src/demo.c @@ -115,7 +115,7 @@ double get_wall_time() return (double)time.tv_sec + (double)time.tv_usec * .000001; } -void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, const char *filename, char **names, int classes, int frame_skip, char *prefix) +void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, const char *filename, char **names, int classes, int frame_skip, char *prefix, char *out_filename) { //skip = frame_skip; image **alphabet = load_alphabet(); @@ -194,7 +194,7 @@ void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, const ch if(!prefix){ //show_image(disp, "Demo"); - show_image_cv_ipl(show_img, "Demo"); + show_image_cv_ipl(show_img, "Demo", out_filename); int c = cvWaitKey(1); if (c == 10){ if(frame_skip == 0) frame_skip = 60; @@ -244,7 +244,7 @@ void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, const ch } } #else -void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, const char *filename, char **names, int classes, int frame_skip, char *prefix) +void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, const char *filename, char **names, int classes, int frame_skip, char *prefix, char *out_filename) { fprintf(stderr, "Demo needs OpenCV for webcam images.\n"); } diff --git a/src/demo.h b/src/demo.h index 5f922717..36fa9559 100644 --- a/src/demo.h +++ b/src/demo.h @@ -2,6 +2,6 @@ #define DEMO #include "image.h" -void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, const char *filename, char **names, int classes, int frame_skip, char *prefix); +void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, const char *filename, char **names, int classes, int frame_skip, char *prefix, char *out_filename); #endif diff --git a/src/detector.c b/src/detector.c index f6b700ca..367b3a32 100644 --- a/src/detector.c +++ b/src/detector.c @@ -509,6 +509,7 @@ void test_detector(char *datacfg, char *cfgfile, char *weightfile, char *filenam void run_detector(int argc, char **argv) { + char *out_filename = find_char_arg(argc, argv, "-out_filename", 0); char *prefix = find_char_arg(argc, argv, "-prefix", 0); float thresh = find_float_arg(argc, argv, "-thresh", .24); int cam_index = find_int_arg(argc, argv, "-c", 0); @@ -555,6 +556,6 @@ void run_detector(int argc, char **argv) int classes = option_find_int(options, "classes", 20); char *name_list = option_find_str(options, "names", "data/names.list"); char **names = get_labels(name_list); - demo(cfg, weights, thresh, cam_index, filename, names, classes, frame_skip, prefix); + demo(cfg, weights, thresh, cam_index, filename, names, classes, frame_skip, prefix, out_filename); } } diff --git a/src/image.c b/src/image.c index 9efe2f65..3375ea2b 100644 --- a/src/image.c +++ b/src/image.c @@ -518,7 +518,7 @@ void show_image_cv(image p, const char *name) } -void show_image_cv_ipl(IplImage *disp, const char *name) +void show_image_cv_ipl(IplImage *disp, const char *name, const char *out_filename) { if (disp == NULL) return; char buff[256]; @@ -529,7 +529,7 @@ void show_image_cv_ipl(IplImage *disp, const char *name) ++windows; cvShowImage(buff, disp); - + if(out_filename) { CvSize size; { @@ -539,10 +539,10 @@ void show_image_cv_ipl(IplImage *disp, const char *name) static CvVideoWriter* output_video = NULL; // cv::VideoWriter output_video; if (output_video == NULL) { - const char* output_name = "test_dnn_out.avi"; - //output_video = cvCreateVideoWriter(output_name, CV_FOURCC('H', '2', '6', '4'), 25, size, 1); - output_video = cvCreateVideoWriter(output_name, CV_FOURCC('D', 'I', 'V', 'X'), 25, size, 1); - //output_video = cvCreateVideoWriter(output_name, CV_FOURCC('M', 'J', 'P', 'G'), 25, size, 1); + //const char* output_name = "test_dnn_out.avi"; + //output_video = cvCreateVideoWriter(out_filename, CV_FOURCC('H', '2', '6', '4'), 25, size, 1); + output_video = cvCreateVideoWriter(out_filename, CV_FOURCC('D', 'I', 'V', 'X'), 25, size, 1); + //output_video = cvCreateVideoWriter(out_filename, CV_FOURCC('M', 'J', 'P', 'G'), 25, size, 1); } cvWriteFrame(output_video, disp); // comment this line to improve FPS !!! diff --git a/src/yolo.c b/src/yolo.c index 289a6cc1..e8b9e8bd 100644 --- a/src/yolo.c +++ b/src/yolo.c @@ -340,6 +340,7 @@ void test_yolo(char *cfgfile, char *weightfile, char *filename, float thresh) void run_yolo(int argc, char **argv) { + char *out_filename = find_char_arg(argc, argv, "-out_filename", 0); char *prefix = find_char_arg(argc, argv, "-prefix", 0); float thresh = find_float_arg(argc, argv, "-thresh", .2); int cam_index = find_int_arg(argc, argv, "-c", 0); @@ -356,5 +357,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(cfg, weights, thresh, cam_index, filename, voc_names, 20, frame_skip, prefix); + else if(0==strcmp(argv[2], "demo")) demo(cfg, weights, thresh, cam_index, filename, voc_names, 20, frame_skip, prefix, out_filename); }