Vous pouvez voir à partir de la documentation minmax_element qu'il renvoie une paire d'itérateurs.
Étant donné:
vector<Point> pts = ...
auto mmx = std::minmax_element(pts.begin(), pts.end(), less_by_y);
vous pouvez accéder à l'itérateur à l'élément min avec mmx.first
et l'itérateur à l'élément max avec mmx.second
.
Si vous souhaitez récupérer les valeurs min et max y
que vous devez faire:
int min_y = mmx.first->y;
int max_y = mmx.second->y;
Puisque vous êtes OpenCV, vous pouvez également trouver les y
valeurs à l'aide boudingRect
:
Rect box = boundingRect(pts);
std::cout << "min y: " << box.tl().y << std::endl;
std::cout << "max y: " << box.br().y - 1 << std::endl; // Note the -1!!!
Bien que cela soit probablement plus lent, vous n'avez pas besoin de définir la fonction de comparaison personnalisée. Cela calcule également min et max x
, si nécessaire.
Voici un exemple complet:
#include <opencv2/opencv.hpp>
#include <algorithm>
#include <iostream>
using namespace cv;
bool less_by_y(const cv::Point& lhs, const cv::Point& rhs)
{
return lhs.y < rhs.y;
}
int main(int argc, char** argv)
{
// Some points
vector<Point> pts = {Point(5,5), Point(5,0), Point(3,5), Point(3,7)};
// Find min and max "y"
auto mmx = std::minmax_element(pts.begin(), pts.end(), less_by_y);
// Get the values
int min_y = mmx.first->y;
int max_y = mmx.second->y;
// Get the indices in the vector, if needed
int idx_min_y = std::distance(pts.begin(), mmx.first);
int idx_max_y = std::distance(pts.begin(), mmx.second);
// Show results
std::cout << "min y: " << min_y << " at index: " << idx_min_y << std::endl;
std::cout << "max y: " << max_y << " at index: " << idx_max_y << std::endl;
// Using OpenCV boundingRect
Rect box = boundingRect(pts);
std::cout << "min y: " << box.tl().y << std::endl;
std::cout << "max y: " << box.br().y - 1 << std::endl; // Note the -1!!!
return 0;
}
* "Mais à cause de ma stupidité" * - Non, à cause de votre manque de volonté inexplicable de lire la documentation. Sérieusement, quel est le problème avec la documentation sur http://en.cppreference.com/w/cpp/algorithm/minmax_element? –