首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在C++中通过OpenCV拼接图像

无法在C++中通过OpenCV拼接图像
EN

Stack Overflow用户
提问于 2015-09-22 21:52:31
回答 2查看 485关注 0票数 0

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

代码语言:javascript
复制
#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/ve5sY -- http://imgur.com/a/32ZNS

我做错了什么?我怎么才能修复它?

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2015-09-22 22:02:37

cv::Stitchers的工作原理是在单独的图像中找到共同的特征,并使用这些特征来找出图像在哪里适合在一起。在你的样本中,你可以找到很多重叠的地方:蓝色的屋顶,路对面的建筑物的特征,等等。

看起来你可以把这些图片“拼接”在一起。为此,您可以使用hconcat,如以下答案所述:https://stackoverflow.com/a/20079134/1737727

票数 2
EN

Stack Overflow用户

发布于 2017-02-04 18:06:38

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

代码语言:javascript
复制
Mat image1, image2;
hconcat(image1,image2,image1);//Syntax->
hconcat(source1,source2,destination);

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

代码语言:javascript
复制
Mat image;
Mat columns=image.colRange(20,30);
hconcat(image,columns,image);

vconcat是一个类似于垂直粘贴图像的功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32718765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档