1

私は2つの長方形ベクトルを持っています

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

ウィンドウと顔を連結する必要があります...そのために、コードを次のように記述しました

 int fsize=faces.size();
    for(int i=0;i<windows.size();i++)
    {
        faces[fsize]=windows[i];
        fsize++;
    }

しかし、このコードはセグメンテーション違反を引き起こしていると思います...誰かが何かを知っています..または組み込み関数??

4

2 に答える 2

3

インサートを使用:

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

またはコンテンツを移動するには:

faces.insert(faces.end(), std::make_move_iterator(windows.begin()), 
                          std::make_move_iterator(windows.end()));
于 2013-02-18T02:47:50.533 に答える
2

の境界外にアクセスするよりも多くの要素がある場合は、に置き換えfacesています。windowswindowsfacesfaces

Concatenating代わりに本当に意味がある場合replacing

faces.reserve(faces.size() + windows.size());
faces.insert(faces.end(), windows.begin(), windows.end());
于 2013-02-18T02:48:57.660 に答える