main
Brett 2024-08-09 13:49:14 -04:00
parent a81d01113c
commit 22bb4d0981
2 changed files with 28 additions and 28 deletions

View File

@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.25)
project(image-gp-6 VERSION 0.0.25)
project(image-gp-6 VERSION 0.0.26)
include(FetchContent)

View File

@ -247,33 +247,33 @@ constexpr auto create_fitness_function()
fitness.raw_fitness += 400;
else
fitness.raw_fitness += raw.total + raw.combined + 1.0;
cv::Mat base_image_large{full_base_image.get_width(), full_base_image.get_height(), CV_32FC3, full_base_image.get_data()};
cv::Mat templ{IMAGE_SIZE, IMAGE_SIZE, CV_32FC3, v.rgb_data};
cv::Mat result;
int result_cols = base_image_large.cols - templ.cols + 1;
int result_rows = base_image_large.rows - templ.rows + 1;
result.create(result_rows, result_cols, CV_32FC1);
double minVal;
double maxVal;
cv::matchTemplate(base_image_large, templ, result, match_method);
minMaxLoc(result, &minVal, &maxVal, nullptr, nullptr, cv::Mat());
/// For SQDIFF and SQDIFF_NORMED, the best matches are lower values. For all the other methods, the higher the better
if (match_method == cv::TM_SQDIFF || match_method == cv::TM_SQDIFF_NORMED)
{
if (std::isinf(minVal) || std::isnan(minVal))
minVal = 200000;
fitness.raw_fitness += minVal * 0.01f;
//BLT_TRACE("%lf, %lf", minVal, maxVal);
} else
{
BLT_WARN("Hello!");
}
//
// cv::Mat base_image_large{full_base_image.get_width(), full_base_image.get_height(), CV_32FC3, full_base_image.get_data()};
// cv::Mat templ{IMAGE_SIZE, IMAGE_SIZE, CV_32FC3, v.rgb_data};
// cv::Mat result;
//
// int result_cols = base_image_large.cols - templ.cols + 1;
// int result_rows = base_image_large.rows - templ.rows + 1;
//
// result.create(result_rows, result_cols, CV_32FC1);
//
// double minVal;
// double maxVal;
// cv::matchTemplate(base_image_large, templ, result, match_method);
//
// minMaxLoc(result, &minVal, &maxVal, nullptr, nullptr, cv::Mat());
//
// /// For SQDIFF and SQDIFF_NORMED, the best matches are lower values. For all the other methods, the higher the better
// if (match_method == cv::TM_SQDIFF || match_method == cv::TM_SQDIFF_NORMED)
// {
// if (std::isinf(minVal) || std::isnan(minVal))
// minVal = 200000;
// fitness.raw_fitness += minVal * 0.01f;
// //BLT_TRACE("%lf, %lf", minVal, maxVal);
// } else
// {
// BLT_WARN("Hello!");
// }
fitness.raw_fitness += last_fitness;
} else