c++ - 在每个 vector<vector<Point>> 中找到最小/最大 x,y

标签 c++ opencv image-processing

我在图像中找到了轮廓,并将它们的坐标存储在 vector < vector < Point >> 中,如下所示:vector of vector(Point)

我想在每个 vector 中找到 xmax、xmin、ymax 和 ymin。 Min/Max coordinates 我必须将其写下来,以便我可以在脚本的其他部分使用这些值。

vector<vector<Point> > contours1; 
vector<Vec4i> hierarchy1; 
findContours(testowy, contours1, hierarchy1, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE);

int xmax = 0;
int xymax = 0;
int ymax = 0;
int yxmax = 0;


for( int i = 0; i < contours1.size(); i++ ){
        for(int j=0; j < contours1[i].size();j++){

            if(contours1[i][j].x > xmax){
            xmax = contours1[i][j].x;
            xymax = contours1[i][j].y;   

            }                 

            if(contours1[i][j].y > ymax){
            ymax = contours1[i][j].y;
            yxmax = contours1[i][j].x;

            }  
        }
    } 

不幸的是我的代码只能找到所有 vector 的最大坐标。

最佳答案

struct myclass {
    bool operator() (cv::Point pt1, cv::Point pt2) { return (pt1.y < pt2.y); }
} myobject;
sort(pnt.begin(), pnt.end(), myobject);

使用这个简单的代码并将 pnt 替换为您的 vector 名称,您可以在 vector 中找到最大/最小值 vecotr[0] 具有混合值,而 vector [last] 具有最大值

关于c++ - 在每个 vector<vector<Point>> 中找到最小/最大 x,y,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45622203/

相关文章:

python - 导入 cv2 时 DLL 加载失败错误

opencv - 使用 OpenCV 从深度图像中去除白点

c++ - 在 C++ 中将数组作为函数参数传递

c++ - 将代码分成 block 是好的做法吗?

c++ - 有没有办法在保持图像引用的同时从两个图像创建一个垫子

c++ - 使用 C++ 在 opencv 中检测图像中任何文本的位置

java - cvFindHomography 抛出错误

c++ - 返回带槽的数据

c++ - 以某种方式用质数填充 vector

c++ - 所以我决定不再使用命名空间,但现在我应该什么时候添加 std::或 cv::?