我正在尝试使用以下代码将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;
}
答案 0 :(得分:0)
为什么rois应该是Rect
矢量的矢量
因为您可以为每张图片传递更多的投资回报率,作为向量。
因此,尺寸1是您的图像数量,尺寸2是每个图像的ROI数量。