AlexeyAB
2017-08-09 ee0dec90de9802912a2c5ccd4e9854c3e72bf701
src/yolo_console_dll.cpp
@@ -63,17 +63,19 @@
}
int main()
int main(int argc, char *argv[])
{
   std::string filename;
   if (argc > 1) filename = argv[1];
   Detector detector("yolo-voc.cfg", "yolo-voc.weights");
   auto obj_names = objects_names_from_file("data/voc.names");
   while (true) 
   {
      std::string filename;
   {
      std::cout << "input image or video filename: ";
      std::cin >> filename;
      if(filename.size() == 0) std::cin >> filename;
      if (filename.size() == 0) break;
      
      try {
@@ -87,13 +89,14 @@
            std::vector<bbox_t> result_vec, thread_result_vec;
            detector.nms = 0.02; // comment it - if track_id is not required
            std::thread td([]() {});
            std::atomic<int> ready_flag = false;
            std::atomic<int> ready_flag;
            ready_flag = false;
            cv::VideoCapture cap(filename);
            for (; cap >> frame, cap.isOpened();) {
               td.join();
               result_vec = thread_result_vec;
               det_frame = frame;
               td = std::thread([&]() { thread_result_vec = detector.detect(det_frame, 0.2, true); ready_flag = true; });
               td = std::thread([&]() { thread_result_vec = detector.detect(det_frame, 0.24, true); ready_flag = true; });
               if (!prev_frame.empty()) {
                  result_vec = detector.tracking(result_vec);  // comment it - if track_id is not required
@@ -137,6 +140,7 @@
      }
      catch (std::exception &e) { std::cerr << "exception: " << e.what() << "\n"; getchar(); }
      catch (...) { std::cerr << "unknown exception \n"; getchar(); }
      filename.clear();
   }
   return 0;