我尝试使用没有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
答案 0 :(得分:1)
如果你进入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
,那么这就是您的代码崩溃的原因。