Visual Vibration Tracking 0.2
Загрузка...
Поиск...
Не найдено
contour_handler.h
1#ifndef CONTOUR_HANDLER_H
2#define CONTOUR_HANDLER_H
3
4// standart headers
5#include <iostream>
6
7// OpenCV headers
8#include <opencv2/opencv.hpp>
9
10// my headers
11#include "VVT-V2/helper.h"
12
13using namespace cv;
14
23{
24public:
30 ContourHandler(Mat frame, Rect* ROI = nullptr);
35 void DrawContours(Mat& frame);
40 std::vector<std::vector<Point2i>> GetContours();
47 std::vector<Point2f> GetContinousContours();
48
49private:
54 template<typename T>
55 std::vector<T> MakeTwiceThinner(std::vector<T> src);
62 template<typename T>
63 float CalculateDistance(T point1, T point2);
64
65private:
69 std::vector<std::vector<Point>>contour_shapes_;
75
76};
77
78#endif
Класс для создания объектов-обработчиков контуров.
float minimal_distance_
Минимальное расстояние между точками контура, при котором "левая" ("первая") точка будет сохранена
std::vector< std::vector< Point2i > > GetContours()
Возвращает найденные контура в виде { { contour_1 }, { contour_2 }, ... , { contour_n } }.
void DrawContours(Mat &frame)
Отрисовывает контура на изображении
std::vector< Point2f > GetContinousContours()
Возвращает найденные контура в виде { contour_1, contour_2, ... , contour_n }.
float CalculateDistance(T point1, T point2)
Вычисляет расстояние между двумя точками
std::vector< T > MakeTwiceThinner(std::vector< T > src)
Удаляет каждый второй элемент вектора (уменьшает размер в два раза)
std::vector< std::vector< Point > > contour_shapes_
Контуры в виде { { contour_1 }, { contour_2 }, ... , { contour_n } }.