gpt4 book ai didi

c++ - 无法通过 C++ 中的 OpenCV 拼接图像

转载 作者:行者123 更新时间:2023-11-28 02:20:27 24 4
gpt4 key购买 nike

我需要在 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

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

提前致谢。

最佳答案

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

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

关于c++ - 无法通过 C++ 中的 OpenCV 拼接图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32718765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com