我需要从一个包含x和y坐标信息的数据集中找到最小和最大值(最小x,最小y,最大x,最大y)。
vector<cv::Point>
这是我的代码:
vector<cv::Point> contour;
...
Min = Point(640, 480) ;
Max = Point(0,0) ;
for (int j=0; j<(int)contour.size(); j++)
{
if (contour[j].x < Min.x) Min.x = contour[j].x ;
if (contour[j].y < Min.y) Min.y = contour[j].y ;
if (contour[j].x > Max.x) Max.x = contour[j].x ;
if (contour[j].y > Max.y) Max.y = contour[j].y ;
}
这很好用。我使用了mimmax STL开发了一个版本:
auto XminXmax = minmax_element(contour.begin(), contour.end(), [](Point p1,Point p2) {return p1.x < p2.x; });
auto YminYmax = minmax_element(contour.begin(), contour.end(), [](Point p1,Point p2) {return p1.y < p2.y; });
Point Min = Point((*XminXmax.first).x, (*YminYmax.first).y );
Point Max = Point((*XminXmax.second).x, (*YminYmax.second).y );
这也可以正常运行并产生相同的结果。 但是由于算法minmax被调用两次,执行时间会加倍。 能否通过一次调用minmax算法来进行优化?