From 974cee63b911ed77b129f124110fff5edaa9b7bf Mon Sep 17 00:00:00 2001 From: Tadas Baltrusaitis Date: Sat, 18 Nov 2017 21:08:43 +0000 Subject: [PATCH] Fixes for loading images with new interface. --- .../include/RecorderOpenFaceParameters.h | 2 -- lib/local/Utilities/src/ImageCapture.cpp | 12 ++++++++- lib/local/Utilities/src/RecorderOpenFace.cpp | 5 ++-- .../src/RecorderOpenFaceParameters.cpp | 15 ----------- .../Run_OF_on_images.m | 27 +++++++------------ 5 files changed, 22 insertions(+), 39 deletions(-) diff --git a/lib/local/Utilities/include/RecorderOpenFaceParameters.h b/lib/local/Utilities/include/RecorderOpenFaceParameters.h index f2e65eb8..66df54ca 100644 --- a/lib/local/Utilities/include/RecorderOpenFaceParameters.h +++ b/lib/local/Utilities/include/RecorderOpenFaceParameters.h @@ -88,8 +88,6 @@ namespace Utilities std::string output_codec; double fps_vid_out; - // For output location - std::string output_root = ""; }; } diff --git a/lib/local/Utilities/src/ImageCapture.cpp b/lib/local/Utilities/src/ImageCapture.cpp index 44baf249..ff17de6c 100644 --- a/lib/local/Utilities/src/ImageCapture.cpp +++ b/lib/local/Utilities/src/ImageCapture.cpp @@ -241,11 +241,21 @@ bool ImageCapture::OpenDirectory(std::string directory, std::string bbox_directo std::ifstream in_bbox(bbox_file.string().c_str(), std::ios_base::in); std::vector > bboxes_image; + + // Keep reading bounding boxes from a file, stop if empty line or while (!in_bbox.eof()) { + std::string bbox_string; + std::getline(in_bbox, bbox_string); + + if (bbox_string.empty()) + continue; + + std::stringstream ss(bbox_string); + double min_x, min_y, max_x, max_y; - in_bbox >> min_x >> min_y >> max_x >> max_y; + ss >> min_x >> min_y >> max_x >> max_y; bboxes_image.push_back(cv::Rect_(min_x, min_y, max_x - min_x, max_y - min_y)); } in_bbox.close(); diff --git a/lib/local/Utilities/src/RecorderOpenFace.cpp b/lib/local/Utilities/src/RecorderOpenFace.cpp index 5af041e7..c4a0b6fa 100644 --- a/lib/local/Utilities/src/RecorderOpenFace.cpp +++ b/lib/local/Utilities/src/RecorderOpenFace.cpp @@ -189,13 +189,12 @@ void RecorderOpenFace::SetObservationVisualization(const cv::Mat &vis_track) if (params.outputTracked()) { // Initialize the video writer if it has not been opened yet - if(!video_writer.isOpened()) + if(video_writer.isOpened()) { - std::string video_filename = (path(record_root) / path(filename).replace_extension(".avi")).string(); std::string output_codec = params.outputCodec(); try { - video_writer.open(video_filename, CV_FOURCC(output_codec[0], output_codec[1], output_codec[2], output_codec[3]), params.outputFps(), vis_track.size(), true); + video_writer.open(media_filename, CV_FOURCC(output_codec[0], output_codec[1], output_codec[2], output_codec[3]), params.outputFps(), vis_track.size(), true); } catch (cv::Exception e) { diff --git a/lib/local/Utilities/src/RecorderOpenFaceParameters.cpp b/lib/local/Utilities/src/RecorderOpenFaceParameters.cpp index 91565dbe..2f040466 100644 --- a/lib/local/Utilities/src/RecorderOpenFaceParameters.cpp +++ b/lib/local/Utilities/src/RecorderOpenFaceParameters.cpp @@ -49,21 +49,6 @@ RecorderOpenFaceParameters::RecorderOpenFaceParameters(std::vector // Default output code this->output_codec = "DIVX"; - // First check if there is a root argument (so that videos and outputs could be defined more easilly) - for (size_t i = 0; i < arguments.size(); ++i) - { - if (arguments[i].compare("-root") == 0) - { - output_root = arguments[i + 1] + separator; - i++; - } - if (arguments[i].compare("-outroot") == 0) - { - output_root = arguments[i + 1] + separator; - i++; - } - } - bool output_set = false; output_2D_landmarks = false; diff --git a/matlab_runners/Feature Point Experiments/Run_OF_on_images.m b/matlab_runners/Feature Point Experiments/Run_OF_on_images.m index 3cca6f50..54000c58 100644 --- a/matlab_runners/Feature Point Experiments/Run_OF_on_images.m +++ b/matlab_runners/Feature Point Experiments/Run_OF_on_images.m @@ -26,9 +26,9 @@ else end if(isunix) - command = '"../../build/bin/FaceLandmarkImg"'; + executable = '"../../build/bin/FaceLandmarkImg"'; else - command = '"../../x64/Release/FaceLandmarkImg.exe"'; + executable = '"../../x64/Release/FaceLandmarkImg.exe"'; end if(any(strcmp(varargin, 'model'))) @@ -44,24 +44,15 @@ else multi_view = 0; end -command = cat(2, command, [' -mloc ' model ' ']); -command = cat(2, command, [' -multi_view ' num2str(multi_view) ' ']); - -tic -parfor i=1:numel(dataset_dirs) +command = sprintf("%s -mloc %s -multiview %s -2Dfp -tracked ", executable, model, num2str(multi_view)); - input_loc = ['-fdir "', dataset_dirs{i}, '" ']; - command_c = cat(2, command, input_loc); - - out_loc = ['-ofdir "', output_loc, '" ']; - command_c = cat(2, command_c, out_loc); - - if(verbose) - out_im_loc = ['-oidir "', output_loc, '" ']; - command_c = cat(2, command_c, out_im_loc); - end +% TODO just landmarks + BBoxes + +tic +for i=1:numel(dataset_dirs) - command_c = cat(2, command_c, ' -wild '); + command_c = sprintf('%s -fdir "%s" -bboxdir "%s" -out_dir "%s" -wild ',... + command, dataset_dirs{i}, dataset_dirs{i}, output_loc); if(isunix) unix(command_c, '-echo');