/* Copyright (c) 2012 Patrick Ruoff * Copyright (c) 2015-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 "ftnoir_tracker_pt_settings.h" #include "camera.h" #include "numeric.hpp" #include #include #include //#define DEBUG_MEANSHIFT namespace pt_extractor_impl { using namespace types; struct blob { double radius, value; vec2 pos; cv::Rect rect; unsigned idx; blob(double radius, const cv::Vec2d& pos, double value, const cv::Rect &rect, unsigned idx); }; class PointExtractor final { public: // extracts points from frame and draws some processing info into frame, if draw_output is set // dt: time since last call in seconds void extract_points(const cv::Mat& frame, cv::Mat& preview_frame, std::vector& points); PointExtractor(); settings_pt s; private: static constexpr int max_blobs = 16; cv::Mat1b frame_bin, frame_gray; cv::Mat1b contour_masks[max_blobs]; cv::Mat1f hist; std::vector blobs; std::vector> contours; }; } // ns pt_extractor_impl using pt_extractor_impl::PointExtractor;