#include "common.hh" #include #include #include std::tuple init_image(std::string const &t_input_file) { cv::Mat input_image = cv::imread(t_input_file, cv::IMREAD_COLOR); if (!input_image.data) { spdlog::critical("Could not open or find image!\n"); exit(-1); } spdlog::info("Image loaded!"); spdlog::info("Width:\t\t{}", input_image.size().width); spdlog::info("Height:\t{}", input_image.size().height); cv::Mat process_image(input_image.size().height, input_image.size().width, CV_8UC3, cv::Scalar(0, 0, 0)); return std::make_tuple(std::move(input_image), process_image); } double euclidian_distance(cv::Mat const &t_img1, cv::Mat const &t_img2) { double euclidian = 0.0; for (int w = 0; w < t_img1.size().width; ++w) { for (int h = 0; h < t_img1.size().height; ++h) { euclidian += std::abs(std::pow(t_img1.at(h, w), 2) - std::pow(t_img2.at(h, w), 2)); } } euclidian = std::sqrt(euclidian); return euclidian; } cv::Scalar random_color(std::mt19937 &t_gen) { static std::uniform_int_distribution<> dis(0, 255); return cv::Scalar(dis(t_gen), dis(t_gen), dis(t_gen)); }