2

我尝试使用没有estimateTransform 的compose 全景图......它与estimateTransform 配合得很好

stitcher.estimateTransform(imgs);
stitcher.composePanorama(pano);

但我找到了另一种计算图像旋转等的方法,这就是为什么我想像这样使用 composepanorama:

vector<Mat> imgs;

 imgs.push_back(image1);
 imgs.push_back(image2);
 imgs.push_back(image3);
 imgs.push_back(image4);
 imgs.push_back(image5);
 imgs.push_back(image6);   

stitcher.composePanorama(Inputimages,pano);

但是每次我尝试这个我都会收到这个错误:

Error: Assertion failed (imgs.size() == imgs_.size()) in unknown function, file ......\src\opencv\modules\stitching\src\stitcher.cpp , line 128
4

1 回答 1

2

如果你进入stitcher.cpp

Stitcher::Status Stitcher::composePanorama(InputArrayOfArrays images, OutputArray pano)
{
    LOGLN("Warping images (auxiliary)... ");

    std::vector<UMat> imgs;
    images.getUMatVector(imgs);
    if (!imgs.empty())
    {
        CV_Assert(imgs.size() == imgs_.size());

imgs_因此,如果未初始化全局向量,您将收到该断言错误。由于imgs_在以下位置初始化:

Stitcher::Status Stitcher::estimateTransform(InputArrayOfArrays images, const std::vector<std::vector<Rect> > &rois)
{
    images.getUMatVector(imgs_);

这就是为什么如果您estimateTransform之前不调用代码会崩溃的原因composePanorama

于 2016-03-16T08:30:55.387 回答