【问题标题】:OpenCV StitchingOpenCV 拼接
【发布时间】:2016-09-07 18:08:18
【问题描述】:

我迫切需要有关 opencv 拼接模块的帮助。我需要使用 opencv 中的“stitch”方法创建全景摄影。以下是我到目前为止的内容.. 但是当我运行程序时出现此错误:需要更多图像。是否有 OpenCV 专家可以帮助我解决此错误?

IplImage* img1 = cvLoadImage("/Users/myName/Desktop/image1.jpg", CV_LOAD_IMAGE_COLOR);
IplImage* img2 = cvLoadImage("/Users/myName/Desktop/image2.jpg", CV_LOAD_IMAGE_COLOR);

Mat vecImg1 = img1;
Mat vecImg2 = img2;

Mat allImages;

allImages.push_back(vecImg1);
allImages.push_back(vecImg2);

Mat outputImage;
Stitcher stitchImg = Stitcher::createDefault();
Stitcher::Status s = stitchImg.stitch(allImages, outputImage);
cout << "status: " << s << endl;

cvNamedWindow("stitch images", CV_WINDOW_AUTOSIZE);
cvShowImage("stitch images", &outputImage);
cvWaitKey(0);
cvDestroyWindow("stitch images");

【问题讨论】:

  • 我不是 OpenCV 专家,但您是否尝试向您的 allImages 添加更多图像?
  • 两张图片就足够了。它们之间是否有足够的重叠?
  • 是的,两者之间有足够的重叠,因为它们是执行拼接的示例图像.. :(
  • 为什么不从OpenCV提供的示例代码开始呢?

标签: c++ opencv image-stitching panoramas


【解决方案1】:

我猜“allImages”的类型应该是vector&lt;Mat&gt;

查看 OpenCV 示例“samples/cpp/stitching.cpp”。

【讨论】:

  • 如果我将 allImages 更改为 vector 然后,我会收到一条错误消息“cv::_InputArray::_InputArray(std::__1::vector<:mat std::__1 ::allocator> > const&)"
  • 这是说,x86_64架构的未定义符号
  • 我提到了stitching.cpp,但我不断收到错误.. :( .
【解决方案2】:

其实我找到了办法。

在 Xcode 中,在 Build Settings 下,我将 Compiler 类型从 Apple LLVM 更改为 LLVM GCC 4.2,现在我的代码生成全景图像就好了!

谢谢!

【讨论】:

    【解决方案3】:

    在stitcher类函数中,opencv查找图像之间的特征匹配。如果您输入的图像没有或很少有共同特征,则不会将这些图像视为同一视图的图像 因此需要更多图片

    【讨论】:

      猜你喜欢
      • 2011-08-26
      • 1970-01-01
      • 1970-01-01
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 2013-06-12
      相关资源
      最近更新 更多