From f6387a241b8f2b7056c509741501969c047679cc Mon Sep 17 00:00:00 2001 From: Phuntsok Drak-pa Date: Wed, 20 Mar 2019 20:15:53 +0100 Subject: [PATCH] forgot to include these files --- img/out.png | Bin 0 -> 36653 bytes include/genimg/method1.hh | 12 ++++++++++++ src/method1.cc | 39 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 img/out.png create mode 100644 include/genimg/method1.hh create mode 100644 src/method1.cc diff --git a/img/out.png b/img/out.png new file mode 100644 index 0000000000000000000000000000000000000000..ba718c91fa7203bcf52b107ceef9b0edd3ed4714 GIT binary patch literal 36653 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 Ao&W#< literal 0 HcmV?d00001 diff --git a/include/genimg/method1.hh b/include/genimg/method1.hh new file mode 100644 index 0000000..15710a4 --- /dev/null +++ b/include/genimg/method1.hh @@ -0,0 +1,12 @@ +#ifndef GENETIC_IMAGE_INCLUDE_GENIMG_METHOD1_METHOD1_HH_ +#define GENETIC_IMAGE_INCLUDE_GENIMG_METHOD1_METHOD1_HH_ + +#include +#include +#include +#include + +void method1(cv::Mat &t_reference, cv::Mat &t_output, int t_iterations, + std::mt19937 &t_gen); + +#endif /* GENETIC_IMAGE_INCLUDE_GENIMG_METHOD1_METHOD1_HH_ */ diff --git a/src/method1.cc b/src/method1.cc new file mode 100644 index 0000000..60ab834 --- /dev/null +++ b/src/method1.cc @@ -0,0 +1,39 @@ +#include "method1.hh" +#include "common.hh" +#include "drawing.hh" +#include + +using randint = std::uniform_int_distribution<>; + +void newSquare(cv::Mat &t_process_img, std::mt19937 &t_gen, randint &t_dist) { + const int square_size = t_dist(t_gen); + auto square_top_left = cv::Point{t_dist(t_gen), t_dist(t_gen)}; + // if (auto const diff = t_process_img.size().width - (square_top_left.x + + // square_size); + // diff < 0) { + // square_top_left.x += diff; // += because diff is negative if we reach + // here + // } + draw_shape(t_process_img, square_top_left, square_size, random_color(t_gen), + Shapes::Square); +} + +void method1(cv::Mat &t_reference, cv::Mat &t_output, int t_iterations, + std::mt19937 &t_gen) { + auto diff = euclidian_distance(t_reference, t_output); + auto const max_size = + std::max(t_reference.size().width, t_reference.size().height); + randint dist(0, max_size); + spdlog::info("Beginning method1, initial difference: {}", diff); + while (t_iterations > 0) { + auto temp_image = t_output.clone(); + newSquare(temp_image, t_gen, dist); + if (auto new_diff = euclidian_distance(t_reference, temp_image); + new_diff < diff) { + diff = new_diff; + temp_image.copyTo(t_output); + --t_iterations; + spdlog::info("Iteration {}: diff {}", t_iterations, diff); + } + } +}