diff options
Diffstat (limited to 'tracker-pt/module/point_extractor.h')
-rw-r--r-- | tracker-pt/module/point_extractor.h | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/tracker-pt/module/point_extractor.h b/tracker-pt/module/point_extractor.h index eac2268c..fbfdbb0b 100644 --- a/tracker-pt/module/point_extractor.h +++ b/tracker-pt/module/point_extractor.h @@ -9,17 +9,15 @@ #pragma once #include "pt-api.hpp" - +#include <opencv2/core/mat.hpp> +#include <opencv2/core/types.hpp> #include <vector> -#include <opencv2/core.hpp> -#include <opencv2/imgproc.hpp> - namespace pt_module { -using namespace types; +using namespace numeric_types; -struct blob +struct blob final { f radius, brightness; vec2 pos; @@ -33,14 +31,18 @@ class PointExtractor final : public pt_point_extractor 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 pt_frame& frame, pt_preview& preview_frame, std::vector<vec2>& points) override; - PointExtractor(const QString& module_name); + void extract_points(const pt_frame& frame, + pt_preview& preview_frame, bool preview_visible, + std::vector<vec2>& points) override; + + explicit PointExtractor(const QString& module_name); + private: - static constexpr inline int max_blobs = 16; + static constexpr int max_blobs = 16; pt_settings s; - cv::Mat1b frame_gray, frame_bin, frame_blobs; + cv::Mat1b frame_bin, frame_gray; cv::Mat1f hist; std::vector<blob> blobs; cv::Mat1b ch[3]; @@ -48,8 +50,8 @@ private: void ensure_channel_buffers(const cv::Mat& orig_frame); void ensure_buffers(const cv::Mat& frame); - void extract_single_channel(const cv::Mat& orig_frame, int idx, cv::Mat& dest); - void extract_channels(const cv::Mat& orig_frame, const int* order, int order_npairs); + void extract_single_channel(const cv::Mat& orig_frame, int idx, cv::Mat1b& dest); + void filter_single_channel(const cv::Mat& orig_frame, float r, float g, float b, bool overexp, cv::Mat1b& dest); void color_to_grayscale(const cv::Mat& frame, cv::Mat1b& output); void threshold_image(const cv::Mat& frame_gray, cv::Mat1b& output); |