From 4c95700fc6848d46a33b565df7eb81ada2b32987 Mon Sep 17 00:00:00 2001 From: Patrick Ruoff Date: Mon, 31 Dec 2012 12:33:18 +0000 Subject: Updated PointTracker git-svn-id: svn+ssh://svn.code.sf.net/p/facetracknoir/code@200 19e81ba0-9b1a-49c3-bd6c-561e1906d5fb --- FTNoIR_Tracker_PT/camera.h | 85 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 76 insertions(+), 9 deletions(-) (limited to 'FTNoIR_Tracker_PT/camera.h') diff --git a/FTNoIR_Tracker_PT/camera.h b/FTNoIR_Tracker_PT/camera.h index f26a7a8f..cd1f0842 100644 --- a/FTNoIR_Tracker_PT/camera.h +++ b/FTNoIR_Tracker_PT/camera.h @@ -9,10 +9,13 @@ #define CAMERA_H #include +#include "videoInput/videoInput.h" // ---------------------------------------------------------------------------- struct CamInfo { + CamInfo() : res_x(0), res_y(0), fps(0), f(1) {} + int res_x; int res_y; int fps; @@ -20,30 +23,94 @@ struct CamInfo }; // ---------------------------------------------------------------------------- +// base class for cameras class Camera { public: - - Camera(); - ~Camera(); + Camera() : dt_valid(0), dt_mean(0), desired_index(0), active_index(-1), active(false) {} + virtual ~Camera() {} + + // start/stop capturing + virtual void start() = 0; + virtual void stop() = 0; + void restart() { stop(); start(); } void set_index(int index); - void set_f(float f) { cam_info.f = f; } - bool set_fps(int fps); - bool set_res(int x_res, int y_res); + void set_f(float f); + void set_fps(int fps); + void set_res(int x_res, int y_res); // gets a frame from the camera, dt: time since last call in seconds - cv::Mat get_frame(float dt); + bool get_frame(float dt, cv::Mat* frame); - // WARNING: returned reference is valid as long as object + // WARNING: returned references are valid as long as object const CamInfo& get_info() const { return cam_info; } + const CamInfo& get_desired() const { return cam_desired; } protected: + // get a frame from the camera + virtual bool _get_frame(cv::Mat* frame) = 0; + + // update the camera + virtual void _set_index() = 0; + virtual void _set_f() = 0; + virtual void _set_fps() = 0; + virtual void _set_res() = 0; + + bool active; + int desired_index; int active_index; - CvCapture* cap; CamInfo cam_info; + CamInfo cam_desired; float dt_valid; float dt_mean; }; + +// ---------------------------------------------------------------------------- +// OpenCV camera +/* +class CVCamera : public Camera +{ +public: + CVCamera() : cap(NULL) {} + ~CVCamera() { stop(); } + + void start(); + void stop(); + +protected: + bool _get_frame(cv::Mat* frame); + void _set_index(); + void _set_f(); + void _set_fps(); + void _set_res(); + + CvCapture* cap; +}; +*/ + +// ---------------------------------------------------------------------------- +// videoInput camera +class VICamera : public Camera +{ +public: + VICamera(); + ~VICamera() { stop(); } + + void start(); + void stop(); + +protected: + bool _get_frame(cv::Mat* frame); + void _set_index(); + void _set_f(); + void _set_fps(); + void _set_res(); + + videoInput VI; + cv::Mat new_frame; + unsigned char* frame_buffer; +}; + #endif //CAMERA_H -- cgit v1.2.3