genetic-images/src/common.cc

31 lines
1.0 KiB
C++

#include "common.hh"
#include <cassert>
#include <cmath>
#include <cstdlib>
std::pair<cv::Mat, cv::Mat> 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::debug("Image loaded!");
spdlog::debug("Width:\t\t{}", input_image.size().width);
spdlog::debug("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_pair(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<uchar>(h, w), 2) -
std::pow(t_img2.at<uchar>(h, w), 2));
}
}
euclidian = std::sqrt(euclidian);
return euclidian;
}