From 1e036ac1dc4112442a0f8ea3dfe3aee626f877f1 Mon Sep 17 00:00:00 2001 From: Michael Platings Date: Thu, 23 May 2024 10:10:58 +0000 Subject: [PATCH] Fix bugs in min_max conformity test 1. Don't try to use cv::Mat::at to access channels. 2. min_index & max_index must accomodate an index for each matrix dimension. --- conformity/opencv/test_min_max.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/conformity/opencv/test_min_max.cpp b/conformity/opencv/test_min_max.cpp index ce88bf03c..9f9731e56 100644 --- a/conformity/opencv/test_min_max.cpp +++ b/conformity/opencv/test_min_max.cpp @@ -11,15 +11,12 @@ template cv::Mat exec_min_max(cv::Mat& input) { double minVal, maxVal; if constexpr (GetIndex) { - int min_index[2], max_index[2]; + cv::Mat result(2 + 2 * input.dims, 1, CV_32SC1); + int32_t* min_index = result.ptr(2, 0); + int32_t* max_index = result.ptr(2 + input.dims, 0); cv::minMaxIdx(input, &minVal, &maxVal, min_index, max_index); - cv::Mat result(6, 1, CV_32SC1); result.at(0, 0) = minVal; result.at(1, 0) = maxVal; - result.at(2, 0) = min_index[0]; - result.at(3, 0) = min_index[1]; - result.at(4, 0) = max_index[0]; - result.at(5, 0) = max_index[1]; return result; } else { cv::minMaxIdx(input, &minVal, &maxVal); @@ -45,8 +42,8 @@ bool test_min_max(int index, RecreatedMessageQueue& request_queue, // Add a few random values at random locations. for (int i = 0; i < 3; ++i) { - input.at(rng.next() % x, rng.next() % y, rng.next() % Channels) = - rng.next(); + T* pixel = input.ptr(rng.next() % x, rng.next() % y); + pixel[rng.next() % Channels] = rng.next(); } cv::Mat actual = exec_min_max(input); -- GitLab