From 7536ac46d919ab2a85d6ea3876e3a725af971e3f Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Mon, 20 Mar 2017 06:24:08 +0100 Subject: tracker/pt: camera changes - move dt handling here, from ITracker impl - don't depend on other PT headers. we'd like to reuse the code. - adjust return value convention. - get rid of dt_valid - return fps as a double Adjust usages in ITracker impl and dialog. --- tracker-pt/camera.h | 47 +++++++++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 24 deletions(-) (limited to 'tracker-pt/camera.h') diff --git a/tracker-pt/camera.h b/tracker-pt/camera.h index 1d3b332c..449a2d3f 100644 --- a/tracker-pt/camera.h +++ b/tracker-pt/camera.h @@ -7,47 +7,47 @@ #pragma once +#include "compat/ndebug-guard.hpp" + #undef NDEBUG #include -#include "numeric.hpp" -#include "ftnoir_tracker_pt_settings.h" - #include "compat/util.hpp" +#include "compat/timer.hpp" #include #include #include +#include #include -namespace impl { - -using namespace types; - struct CamInfo final { - CamInfo() : fov(0), res_x(0), res_y(0), fps(-1), idx(-1) {} - void get_focal_length(f& fx) const; + CamInfo() : fov(0), fps(0), res_x(0), res_y(0), idx(-1) {} + void get_focal_length(double& fx) const; double fov; + double fps; int res_x; int res_y; - int fps; int idx; }; -class Camera final +struct Camera final { -public: - Camera() : dt_valid(0), dt_mean(0) {} + enum open_status : unsigned { open_error, open_ok_no_change, open_ok_change }; - DEFUN_WARN_UNUSED bool start(int idx, int fps, int res_x, int res_y); + using result = std::tuple; + + Camera() : dt_mean(0), fov(0) {} + + DEFUN_WARN_UNUSED open_status start(int idx, int fps, int res_x, int res_y); void stop(); - DEFUN_WARN_UNUSED bool get_frame(double dt, cv::Mat& frame, CamInfo& info); - DEFUN_WARN_UNUSED bool get_info(CamInfo &ret) const; + DEFUN_WARN_UNUSED result get_frame(cv::Mat& frame); + DEFUN_WARN_UNUSED result get_info() const; CamInfo get_desired() const { return cam_desired; } QString get_desired_name() const; @@ -59,13 +59,15 @@ public: const cv::VideoCapture* operator->() const { return cap.get(); } operator bool() const { return cap && cap->isOpened(); } + void set_fov(double value) { fov = value; } + private: DEFUN_WARN_UNUSED bool _get_frame(cv::Mat& frame); - settings_pt s; - - double dt_valid; double dt_mean; + double fov; + + Timer t; CamInfo cam_info; CamInfo cam_desired; @@ -79,9 +81,6 @@ private: using camera_ptr = std::unique_ptr; camera_ptr cap; -}; - -} // ns impl -using impl::Camera; -using impl::CamInfo; + static constexpr double dt_eps = 1./384; +}; -- cgit v1.2.3