1#include "GUI/main_menu.h"
4 params_file_name_{ params_file_name },
5 winname_{ MAIN_MENU_WINDOW_NAME },
11 namedWindow(
winname_, WINDOW_AUTOSIZE);
31 font = FONT_HERSHEY_PLAIN;
41 std::ifstream params_file;
44 if (!params_file.is_open())
46 std::cout <<
"Wrong filename" << std::endl;
62 camera_calibrator.ExecuteCameraCalibration();
69 std::cout <<
"Please attach the parameters.txt file: ";
71 std::cout << std::endl;
73 VideoUndistorter video_undistorter(input_file_name, output_file_name, params);
79 VibrationDetector vibration_detector(input_file_name, output_file_name, MAIN_WINDOW_NAME);
112 std::string tip =
"Press 'Q' to quit";
138 Point text_coordinates = Point(
148 Scalar(255, 255, 255),
169 case EVENT_LBUTTONDOWN:
171 for (
int i = 0; i <
buttons_.size(); i++)
174 if (
buttons_[i].contains(Point(x, y)))
180 std::cout <<
"u've chosen camera calibration" << std::endl;
186 std::cout <<
"u've chosen undistortion" << std::endl;
190 case VIBRATION_MONITORING:
192 std::cout <<
"u've chosen vibration monitoring" << std::endl;
196 case MOVEMENT_ENLARGEMENT:
198 std::cout <<
"u've chosen movement enlarging" << std::endl;
207 case EVENT_MOUSEMOVE:
223 for (
int i = 0; i <
buttons_.size(); i++)
Класс для нахождения коэффициентов для конкретной линзы (с помощью которой было снято видео)
Класс для создания начального меню выбора режима работы программы
void ExecuteCameraCalibration(std::string chessboards_path)
Запускает калибровку камеры по картинкам шахматных досок
std::string input_vibration_detection_
Имя (путь) входного файла (видео) для детекции вибрации
int button_height_
Высота кнопки
Mat menu_
Изображение меню, на котором будет происходить отрисовка
int thickness
Толщина шрифта
std::string output_movement_enlargement_
Имя (путь) выходного файла (видео) для усиления движения
double font_scale
Величина шрифта
std::string params_file_name_
Путь файла с параметрами
void ExecuteVideoUndistortion(std::string input_file_name, std::string output_file_name)
Запускает удаление дисторсии
int button_spacing_
Отступ между кнопками
Point2i last_mouse_position_
Последние найденные в callback координаты курсора
std::string input_distorted_video_
Имя (путь) входного файла (видео) для удаления дисторсии
std::string output_vibration_detection_
Имя (путь) выходного файла (видео) после детекции вибрации
std::string input_calibration_video_
Имя (путь) входного файла (видео) для калибровки
void CreateMenu()
Строит сетку меню с кнопками и надписями на Mat-объекте menu_.
std::string button_text_[4]
Тексты кнопок
void ExecuteMotionMagnification(std::string input_file_name, std::string output_file_name)
Запускает увеличение движения
int top_offset_
Отступ от застаканных кнопок сверху
int menu_width_
Ширина меню
bool mode_chosen_
Флаг выбранного режима
std::string winname_
Название окна
int baseline
Параметр для cv::getText()
void DetectEvent(int event, int x, int y, int flags)
callback функция для определения события (используется для хэндлинга клика мышью)
void ExecuteVibrationMonitoring(std::string input_file_name, std::string output_file_name)
Запускает детекцию вибрации (основной режим)
int button_width_
Ширина кнопки
MainMenu(std::string txt_file_name)
Конструктор этого класса
std::string input_movement_enlargment_
Имя (путь) входного файла (видео) для усиления движения
std::vector< Rect > buttons_
Контейнер, хранящий в себе прямоугольники-кнопки (фактически тут хранятся координаты кнопок)
int width_offset_
Отступ с двух сторон от кнопки по ширине
void LoadPaths()
Открывает нужные пути
int button_amount_
Количество кнопок
std::vector< Scalar > buttons_color_
Контейнер для хранения цвета каждой кнопки
std::string output_undistorted_video_
Имя (путь) выходного файла (видео) после удаления дисторсии
int menu_height_
Высота меню
std::string chessboards_path_
Путь к папке с фотографиями шахматной доски
int bottom_offset_
Отступ от застаканных кнопок снизу
void UpdateBtnColorAndText()
Раскрашивает кнопки и наносит на них текст
static void OnMouse(int event, int x, int y, int flags, void *userdata)
callback функция для определения события (используется для хэндлинга клика мышью)
Дочерний (от EulerEnlarger) класс для визуального увеличения вибрации на видео
void ExecuteLaplaceEnlargement()
Выполняет визуальное увеличение движения
Класс для создания объектов-детекторов вибрации
void ExecuteVibrationDetection()
Выполняет детекцию вибрации
Класс для удаления дисторсии на видео
int ExecuteVideoUndistortion()
Основная часть. Выполняет удаление дисторсии из видео