关于c ++:在opencv中连接向量Rect

Concatenating vector Rect in opencv

本问题已经有最佳答案,请猛点这里访问。

我有两个矩形向量

1
2
std::vector<cv::Rect>faces;
std::vector<cv::Rect>windows;

我需要将窗口与面连接起来…为此,我将代码编写为

1
2
3
4
5
6
 int fsize=faces.size();
    for(int i=0;i<windows.size();i++)
    {
        faces[fsize]=windows[i];
        fsize++;
    }

但我觉得这段代码会产生分段错误……有人知道……或者任何内置函数吗??


使用插入:

1
faces.insert(faces.end(), windows.begin(), windows.end());

或移动内容:

1
2
faces.insert(faces.end(), std::make_move_iterator(windows.begin()),
                          std::make_move_iterator(windows.end()));

你用windows代替faces,如果windows的元素多于faces,你就可以从faces的边界进入。

如果你真的是指Concatenating,而不是replacing

1
2
faces.reserve(faces.size() + windows.size());
faces.insert(faces.end(), windows.begin(), windows.end());