【问题标题】:Unable to stitch images via OpenCV in C++无法通过 C++ 中的 OpenCV 拼接图像
【发布时间】:2015-09-22 13:52:31
【问题描述】:

我需要在 C++ 中使用 OpenCV 拼接一些图像,所以我编写了以下代码:

#include <opencv2/opencv.hpp>
#include <opencv2/stitching.hpp>

#include <cstdio>
#include <vector>

void main()
{
  std::vector<cv::Mat> vImg;
  cv::Mat rImg;

  vImg.push_back(cv::imread("./stitching_img/S1.png"));
  vImg.push_back(cv::imread("./stitching_img/S2.png"));
  vImg.push_back(cv::imread("./stitching_img/S3.png"));

  cv::Stitcher stitcher = cv::Stitcher::createDefault();

  unsigned long AAtime = 0, BBtime = 0;
  AAtime = cv::getTickCount();

  cv::Stitcher::Status status = stitcher.stitch(vImg, rImg);

  BBtime = cv::getTickCount();
  printf("%.2lf sec \n", (BBtime - AAtime) / cv::getTickFrequency());

  if (cv::Stitcher::OK == status)
    cv::imshow("Stitching Result", rImg);
  else
    std::printf("Stitching fail.");

  cv::waitKey(0);
}

不幸的是,它总是在以下文件上显示“拼接失败” -- http://imgur.com/a/32ZNS 而它在这些文件上工作 -- http://imgur.com/a/ve5sY

我做错了什么?我该如何解决?

提前致谢。

【问题讨论】:

    标签: c++ opencv opencv3.0


    【解决方案1】:

    cv::Stitchers 的工作原理是在单独的图像中找到共同特征,并使用这些特征来确定图像的位置。在拼接工作的样本中,您可以发现很多重叠:蓝色屋顶、马路对面建筑物的特征等。

    在你失败的集合中,没有重叠,因此算法无法弄清楚如何将它们组合在一起。似乎您可以通过将它们放在一起来“缝合”这些图像。为此,您可以使用hconcat,如以下答案所述:https://stackoverflow.com/a/20079134/1737727

    【讨论】:

    • 好的,非常感谢您的回答。无论如何,我怎样才能将这些图像合二为一?我有一个这样的拼图,宽度和高度相同。有现成的解决方案吗?
    • “您似乎可以将这些图像‘缝合’,只需将它们放在一起即可”——不幸的是,不能。从四面八方将有未知数量的垂直和水平碎片
    • 在这种情况下,您必须提出自己的算法来查看哪些图像匹配,即比较边界行/列上的像素。抱歉,我不知道 OpenCV 内置的任何方法可以做到这一点。
    【解决方案2】:

    有一种非常简单的方法可以并排显示两个图像。可以使用以下opencv提供的函数。

    Mat image1, image2;
    hconcat(image1,image2,image1);//Syntax->
    hconcat(source1,source2,destination);
    

    此功能还可用于将一组列从一个图像复制到另一个图像。

    Mat image;
    Mat columns=image.colRange(20,30);
    hconcat(image,columns,image);
    

    vconcat 是一个类似于垂直拼接图像的功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-03
      • 2011-08-26
      • 2015-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      • 2012-01-02
      相关资源
      最近更新 更多