1#ifndef VIBRATION_DETECTOR_H
2#define VIBRATION_DETECTOR_H
5#define MAIN_WINDOW_NAME "Video"
6#define V_MONITOR_WINDOW_NAME "Vibration Monitor"
13#include <opencv2/video/tracking.hpp>
16#include "VVT-V2/lonely_point_handler.h"
17#include "VVT-V2/colored_point_handler.h"
18#include "VVT-V2/frame_handler.h"
19#include "VVT-V2/helper.h"
20#include "VVT-V2/contour_handler.h"
44 COLORING_BASED_ON_FREQUENCY,
45 COLORING_BASED_ON_AMPLITUDE
52 VibrationDetector(std::string input_file_name, std::string output_file_name, std::string window_name);
91 static void OnMouse(
int event,
int x,
int y,
int flags,
void* userdata);
95 void DetectEvent(
int event,
int x,
int y,
int flags);
Класс для чтения и сохранения кадров видео, а также различной их обработки
Класс для создания объектов-детекторов вибрации
Mat next_img_gray_
Следующий (или текущий после "предыдущего" - смотря как удобнее для понимания) кадр видео в грейскейл...
std::vector< Point2i > histograms_queue_
Очередь на отрисовку гистограм
void CreateNewPoint(Point2f mouse_coordinates)
Создаем "обычную" точку
std::string window_name_
Имя главного окна
void DefaultModeHandler(int event, int x, int y)
Обычный режим
std::vector< Point2i > delete_queue_
Очередь на удаление точек
int level_amount_
Количество слоев пирамиды изображений в алгоритме Л-К
void RoiSelectionModeHandler(int event, int x, int y)
Режим выделения региона интереса
static void OnMouse(int event, int x, int y, int flags, void *userdata)
callback functions for detecting the click
bool warping_figure_selecting_
Флаг, показывающий, происходит ли в данный момент выделение фигуры (эта возможность отключена временн...
Mat prev_img_gray_
Предыдущий кадр видео в грейскейл и с небольшим блюром (FrameHandler::MakeGrayFrame())
Mat current_tracking_frame_
Текущий Mat-instance только что найденного кадра из видео
Mat grad_scale_
Изображение цветной шкалы внизу экрана
int sensivity_in_percents_
Чувствительность при трекинге вибрации
std::vector< Point2f > c_point_queue_
Очередь на создание "цветных" точек
bool fullscreen_
Флаг для полноэкранного режима
double frame_time_
Текущее время кадра в мс (таймкод)
std::vector< LonelyPointHandler * > vec_lonely_point_handlers_
Вектор обработчиков "одиноких" точек
std::vector< Point2i > l_click_queue_
Очередь на создание "обычных" точек
FrameHandler * frame_handler
Фреймпроцессор
std::vector< Point2f > FindGoodFeatures(Mat frame, Rect roi)
Находит подходящие для трекинга точки на изображении
float res_mp_
Коэффициент автоскейла размеров окна в зависимости от разрешения исходного видео
std::string input_file_name_
Имя (путь) входного видео
Point last_mouse_position_
Последняя позиция курсора в главном окне
void DeletePoints(Point2i mouse_coordinates)
Удаляем объект "обычную" точку
void CreateNewColoredPoint(Point2f mouse_coordinates)
Обработчик "цветных" точек
int fps_
ФПС входного видео (две ширины полосы частот вибрации, которые можно отследить)
void DetectEvent(int event, int x, int y, int flags)
callback functions for detecting the click
std::string output_file_name_
Имя (путь) видео, в котором будет результат детектинга
void TrackAndCalc()
Трекает точки алгоритмом Лукаса-Канаде и вызывает БПФ
std::vector< Point > warping_figure_
Координаты фигуры для исправления перспективы
void LeftClickHandler(Point2f mouse_coordinates)
Обработчик левых кликов
bool roi_selecting_
Флаг, показывающий происходит ли в данный момент выделение ROI.
void DeleteColoredPoints()
Удаляем объекты "цветная" точка
bool running_
Флаг запущенного основного алгоритма
void FindAndDeleteUncofidentPoints()
Удаляет "цветные" и "обычные" точки, если уровень доверия к нми слишком низкий
int lk_win_size_
Размер окна для алгоритма Лукаса-Канаде
Mat frame_to_be_shown_
Mat-instance, который будет показан в окне
int current_mode_
Основной режим работы (enum main_mode)
void DrawAndOutput(Mat &frame)
Масштабирует, рисует и выводит на экран обработанный кадр с точками
void DrawDebugLkWinRectangle(Mat &frame)
Рисует точки и выводит данные
std::vector< ColoredPointHandler * > vec_colored_point_handlers_
Вектор обработчиков "цветных" точек
std::string output_csv_file_name_
Имя (путь) файла для хранения метаданных
Mat MakeWarpedFrame(Mat frame, std::vector< Point2i > warping_figure)
Удаляет перспективные искажения
void ExecuteVibrationDetection()
Выполняет детекцию вибрации
Point2i tl_click_coords_
Координаты первой точки прямоугольник (top left, bottom left, top right, bottom right - смотря "в как...
void ServeTheQueues()
Обслуживает очереди на удаление и создание. Необходимо для того, чтобы не нарушить нумерацию точек во...
int point_id_
Псевдо-id (порядковывй номер точки)
int colored_point_mode_
Текущий режим подсветки точек при выбранном регионе интереса (по амплитуде/по частоте)
bool roi_selected_
Флаг, показывающий был ли выделен ROI или нет