から最小/最大値(最小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 が 2 回呼び出されるため、実行時間は 2 倍になります。minmax algo への 1 回の呼び出しでこれを最適化することは可能ですか?