From 76276fdbeade20f30f9474e32a289dba5c09d920 Mon Sep 17 00:00:00 2001
From: AlexeyAB <alexeyab84@gmail.com>
Date: Wed, 23 Aug 2017 18:54:24 +0000
Subject: [PATCH] You can specify filename for output video by using -out_filename res.avi

---
 build/darknet/x64/darknet_demo_coco.cmd      |    2 +-
 src/yolo.c                                   |    3 ++-
 src/image.c                                  |   12 ++++++------
 build/darknet/x64/darknet_net_cam_coco.cmd   |    2 +-
 src/coco.c                                   |    3 ++-
 src/demo.c                                   |    6 +++---
 src/detector.c                               |    3 ++-
 build/darknet/x64/darknet_demo_voc.cmd       |    2 +-
 build/darknet/x64/darknet_web_cam_voc.cmd    |    2 +-
 build/darknet/x64/darknet_coco_9000_demo.cmd |    2 +-
 src/demo.h                                   |    2 +-
 11 files changed, 21 insertions(+), 18 deletions(-)

diff --git a/build/darknet/x64/darknet_coco_9000_demo.cmd b/build/darknet/x64/darknet_coco_9000_demo.cmd
index 390d7d4..9f7f124 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 8eb7809..d00f21f 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 cea032c..4f9e0c2 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 f6d4d87..17f1d15 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 57046ce..c072c84 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 f684fee..8bf5ee7 100644
--- a/src/coco.c
+++ b/src/coco.c
@@ -367,6 +367,7 @@
 
 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 @@
     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 49e08c2..c88c1d9 100644
--- a/src/demo.c
+++ b/src/demo.c
@@ -115,7 +115,7 @@
     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 @@
 
             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 @@
     }
 }
 #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 5f92271..36fa955 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 f6b700c..367b3a3 100644
--- a/src/detector.c
+++ b/src/detector.c
@@ -509,6 +509,7 @@
 
 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 @@
         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 9efe2f6..3375ea2 100644
--- a/src/image.c
+++ b/src/image.c
@@ -518,7 +518,7 @@
 }
 
 
-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 @@
 	++windows;
 	cvShowImage(buff, disp);
 
-
+	if(out_filename)
 	{
 		CvSize size;
 		{
@@ -539,10 +539,10 @@
 		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 289a6cc..e8b9e8b 100644
--- a/src/yolo.c
+++ b/src/yolo.c
@@ -340,6 +340,7 @@
 
 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 @@
     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);
 }

--
Gitblit v1.10.0