From ea09a6e0b38e1ddf43ffcd81d27f0506411eb8e4 Mon Sep 17 00:00:00 2001 From: AlexeyAB Date: Tue, 9 Jan 2018 22:26:54 +0300 Subject: [PATCH] Command line for example of usage DLL/SO --- src/yolo_console_dll.cpp | 20 ++++++++++++++------ src/yolo_v2_class.hpp | 12 +----------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/yolo_console_dll.cpp b/src/yolo_console_dll.cpp index 3f22eb55..dd922ec5 100644 --- a/src/yolo_console_dll.cpp +++ b/src/yolo_console_dll.cpp @@ -11,7 +11,6 @@ #ifdef _WIN32 #define OPENCV -//#include "windows.h" #endif //#define TRACK_OPTFLOW @@ -91,15 +90,24 @@ std::vector objects_names_from_file(std::string const filename) { int main(int argc, char *argv[]) { + std::string names_file = "data/voc.names"; + std::string cfg_file = "cfg/yolo-voc.cfg"; + std::string weights_file = "yolo-voc.weights"; std::string filename; - if (argc > 1) filename = argv[1]; - //Detector detector("cfg/yolo-voc.cfg", "yolo-voc.weights"); - Detector detector("tiny-yolo-voc_air.cfg", "backup/tiny-yolo-voc_air_5000.weights"); + if (argc > 4) { //voc.names yolo-voc.cfg yolo-voc.weights test.mp4 + names_file = argv[1]; + cfg_file = argv[2]; + weights_file = argv[3]; + filename = argv[4]; + } + else if (argc > 1) filename = argv[1]; + + Detector detector(cfg_file, weights_file); - auto obj_names = objects_names_from_file("data/voc.names"); + auto obj_names = objects_names_from_file(names_file); std::string out_videofile = "result.avi"; - bool const save_output_videofile = false; + bool const save_output_videofile = true; #ifdef TRACK_OPTFLOW Tracker_optflow tracker_flow; detector.wait_stream = true; diff --git a/src/yolo_v2_class.hpp b/src/yolo_v2_class.hpp index 5afb22fe..66eab735 100644 --- a/src/yolo_v2_class.hpp +++ b/src/yolo_v2_class.hpp @@ -95,8 +95,6 @@ public: { cv::Mat img; cv::cvtColor(img_src, img, cv::COLOR_RGB2BGR); - //std::cout << "\n img_rgb: " << img_rgb.size() << ", " << img_rgb.type() << ", " << img_rgb.channels() << std::endl; - //std::cout << "\n img: " << img.size() << ", " << img.type() << ", " << img.channels() << std::endl; std::shared_ptr image_ptr(new image_t, [](image_t *img) { free_image(*img); delete img; }); std::shared_ptr ipl_small = std::make_shared(img); *image_ptr = ipl_to_image(ipl_small.get()); @@ -115,20 +113,14 @@ private: image_t out = make_image_custom(w, h, c); int count = 0; - //std::vector tmp(w*h*c); - for (int k = 0; k < c; ++k) { for (int i = 0; i < h; ++i) { int i_step = i*step; for (int j = 0; j < w; ++j) { out.data[count++] = data[i_step + j*c + k] / 255.; - //tmp[count++] = data[i_step + j*c + k]; } } } - //cv::Mat wrapped_8bit(cv::Size(w, h), CV_8UC3, tmp.data()); - //cv::Mat wrapped_32float(cv::Size(w, h), CV_32FC3, out.data); - //wrapped_8bit.convertTo(wrapped_32float, CV_32FC3, 1 / 255.); return out; } @@ -172,7 +164,7 @@ public: sync_PyrLKOpticalFlow_gpu = cv::cuda::SparsePyrLKOpticalFlow::create(); sync_PyrLKOpticalFlow_gpu->setWinSize(cv::Size(21, 21)); // 15, 21, 31 - sync_PyrLKOpticalFlow_gpu->setMaxLevel(3); // +- 5 ptx + sync_PyrLKOpticalFlow_gpu->setMaxLevel(3); // +- 3 pt sync_PyrLKOpticalFlow_gpu->setNumIters(2000); // def: 30 cv::cuda::setDevice(old_gpu_id); @@ -238,8 +230,6 @@ public: return cur_bbox_vec; } - //return cur_bbox_vec; - cv::Mat prev_pts, prev_pts_flow_cpu, cur_pts_flow_cpu; for (auto &i : cur_bbox_vec) {