2

次のコードを使用して、ROI を使用して 5 つの画像をステッチしようとしています。ベクトルと同じサイズlength_errorであっても、メモリの未処理の例外が発生し続けます。また、なぜのベクトルのベクトルが必要なのですか? 内部ベクトルのサイズは 1 です。vImgroisroisRect

int main()
{

    std::ostringstream filepath;
    vector<Mat> vImg;
    vImg.resize(5);

    vector <Rect> tmpRect;
    vector<vector<Rect>> rois;
    rois.resize(5);
    vector<Mat> channels;

    for (int idx = 0; idx < 5; idx++)
    {
        filepath << "C:\\stch3" << idx+1 << ".jpg";
        Mat tmpImg = imread(filepath.str());
        vImg[idx] = tmpImg;
        Rect rect(0, 50, vImg[idx].cols , vImg[idx].rows-70);
        tmpRect.push_back(rect);
        rois[idx] = (tmpRect);
        tmpRect.clear();
        filepath.str("");
    }

    Stitcher stitcher = Stitcher::createDefault(true);
    Mat rImg;
    Stitcher::Status status = stitcher.stitch(vImg, rois, rImg);
    if (status != Stitcher::OK)
    {
        cout << "Can't stitch images, error code = " << int(status) << "Estimate Transform :" << int(status) << endl;
    }
    imshow("Stitching Result", rImg);

    waitKey(0);

    return 0;
}
4

1 に答える 1

0

rois が Rect のベクトルのベクトルであるべき理由

画像ごとにより多くの ROI をベクトルとして渡すことができるためです。

したがって、次元 1 は画像の数、次元 2 は画像あたりの ROI の数です。

于 2015-07-08T13:06:24.423 に答える