From 85988a0e190788c1ee58debc8f07c8fa3375bf5b Mon Sep 17 00:00:00 2001 From: Stéphane Lenclud Date: Wed, 27 Mar 2019 21:18:39 +0100 Subject: Create Points Tracker based on original Point Tracker. --- tracker-points/ftnoir_tracker_pt.h | 81 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 tracker-points/ftnoir_tracker_pt.h (limited to 'tracker-points/ftnoir_tracker_pt.h') diff --git a/tracker-points/ftnoir_tracker_pt.h b/tracker-points/ftnoir_tracker_pt.h new file mode 100644 index 00000000..210c6a01 --- /dev/null +++ b/tracker-points/ftnoir_tracker_pt.h @@ -0,0 +1,81 @@ +/* Copyright (c) 2012 Patrick Ruoff + * Copyright (c) 2014-2016 Stanislaw Halik + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + */ + +#pragma once + +#include "api/plugin-api.hpp" +#include "pt-api.hpp" +#include "point_tracker.h" +#include "cv/numeric.hpp" +#include "video/video-widget.hpp" + +#include +#include +#include + +#include + +#include +#include +#include + +namespace pt_impl { + +class TrackerDialog_PT; + +using namespace numeric_types; + +struct Tracker_PT : QThread, ITracker +{ + friend class TrackerDialog_PT; + + template using pointer = pt_pointer; + + explicit Tracker_PT(pointer const& pt_runtime_traits); + ~Tracker_PT() override; + module_status start_tracker(QFrame* parent_window) override; + void data(double* data) override; + bool center() override; + + int get_n_points(); + [[nodiscard]] bool get_cam_info(pt_camera_info& info); + Affine pose() const; + +private: + void run() override; + + bool maybe_reopen_camera(); + void set_fov(int value); + + pointer traits; + + QMutex camera_mtx; + + PointTracker point_tracker; + + pt_settings s; + + std::unique_ptr layout; + std::vector points; + + int preview_width = 320, preview_height = 240; + + pointer point_extractor; + pointer camera; + pointer widget; + pointer frame; + pointer preview_frame; + + std::atomic point_count { 0 }; + std::atomic ever_success = false; + mutable QMutex center_lock, data_lock; +}; + +} // ns pt_impl + +using Tracker_PT = pt_impl::Tracker_PT; -- cgit v1.2.3