具有ROI矢量的OpenCV Stitcher

时间:2014-09-23 08:23:18

标签: opencv rect roi opencv-stitching

我正在尝试使用以下代码将5个图像与ROI拼接。 即使length_error向量和vImg大小相同,我仍然会得到未处理的内存rois异常。 另外,为什么rois应该是Rect的向量向量?内部向量的大小为1。

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;
}

1 个答案:

答案 0 :(得分:0)

  

为什么rois应该是Rect

矢量的矢量

因为您可以为每张图片传递更多的投资回报率,作为向量。

因此,尺寸1是您的图像数量,尺寸2是每个图像的ROI数量。