From 9da39ce65e42097b5f05eed2ce2cd40cf234ef73 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Tue, 20 Sep 2016 23:08:10 +0200 Subject: tracker/pt: merge from unstable - the pose estimator doesn't need locking at all - only return point count to the dialog, reducing locking - allow for only 8 pixels difference between consecutive dynamic pose frames at 640x480, half that at 320x240 - extract points taking in account pixel brightness, not merely contours - in case of more than three points, prefer the brightest ones scoring on radius and average pixel brightness --- tracker-pt/ftnoir_tracker_pt.h | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'tracker-pt/ftnoir_tracker_pt.h') diff --git a/tracker-pt/ftnoir_tracker_pt.h b/tracker-pt/ftnoir_tracker_pt.h index 613d9e82..c9936cbc 100755 --- a/tracker-pt/ftnoir_tracker_pt.h +++ b/tracker-pt/ftnoir_tracker_pt.h @@ -41,7 +41,7 @@ public: void data(double* data) override; Affine pose() { return point_tracker.pose(); } - int get_n_points() { return point_extractor.get_n_points(); } + int get_n_points() { QMutexLocker l(&points_mtx); return int(points.size()); } bool get_cam_info(CamInfo* info) { QMutexLocker lock(&camera_mtx); return camera.get_info(*info); } public slots: void apply_settings(); @@ -56,9 +56,9 @@ private: void reset_command(Command command); cv::Vec3d get_model_offset(); - QMutex camera_mtx; bool get_focal_length(double& ret); + QMutex camera_mtx, points_mtx; CVCamera camera; PointExtractor point_extractor; PointTracker point_tracker; @@ -67,13 +67,17 @@ private: QFrame* video_frame; settings_pt s; - Timer time; cv::Mat frame; - + Timer time; + + std::vector points; + + volatile int commands; + volatile bool ever_success; - static constexpr double rad2deg = 180.0/3.14159265; - static constexpr double deg2rad = 3.14159265/180.0; + static constexpr double rad2deg = 180/M_PI; + //static constexpr float deg2rad = float(M_PI/180); }; class TrackerDll : public Metadata -- cgit v1.2.3