2019-03-19 13:49:57 +00:00
|
|
|
#include "common.hh"
|
2019-03-19 16:20:04 +00:00
|
|
|
#include <cassert>
|
|
|
|
#include <cmath>
|
2019-03-19 13:49:57 +00:00
|
|
|
#include <cstdlib>
|
|
|
|
|
2019-03-19 16:20:04 +00:00
|
|
|
std::tuple<cv::Mat, cv::Mat> init_image(std::string const &t_input_file) {
|
|
|
|
cv::Mat input_image = cv::imread(t_input_file, cv::IMREAD_COLOR);
|
2019-03-19 13:49:57 +00:00
|
|
|
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);
|
2019-03-20 10:40:17 +00:00
|
|
|
cv::Mat process_image(input_image.size().height, input_image.size().width,
|
2019-03-19 13:49:57 +00:00
|
|
|
CV_8UC3, cv::Scalar(0, 0, 0));
|
|
|
|
return std::make_tuple(std::move(input_image), process_image);
|
|
|
|
}
|
2019-03-19 16:20:04 +00:00
|
|
|
|
|
|
|
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<uchar>(h, w), 2) -
|
|
|
|
std::pow(t_img2.at<uchar>(h, w), 2));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
euclidian = std::sqrt(euclidian);
|
|
|
|
return euclidian;
|
|
|
|
}
|