gpt4 book ai didi

opencv - 无法在 opencv c++ 中使用 Stitcher 类拼接许多图像

转载 作者:太空宇宙 更新时间:2023-11-03 22:25:10 26 4
gpt4 key购买 nike

我想将许多图像 ( 25 ) 拼接在一个塑料零件的直表面的单个图像中。图片看起来像这样:

enter image description here enter image description here enter image description here enter image description here

我正在尝试使用 Stitcher 类形式的 opencv。我的代码在这里:

#include <iostream>
#include <fstream>
#include "opencv2/highgui/highgui.hpp"
#include <opencv2/stitching.hpp>

using namespace std;
using namespace cv;

bool try_use_gpu = false;
vector<Mat> imgs;
string result_name = "result.jpg";
Mat img1, img2,img3,img4,img5,img6,img7, pano;

void printUsage();
//int parseCmdArgs(int argc, char** argv);

int main(int argc, char* argv[])
{
// Load images from HD.
img1 = imread("1.bmp");
img2 = imread("2.bmp");
img3 = imread("3.bmp");
img4 = imread("4.bmp");

// Put images into vector of images "imgs".
imgs.push_back(img1);
imgs.push_back(img2);
imgs.push_back(img3);
imgs.push_back(img4);

// Create stitcher instance and use stitch method with imgs.
Stitcher stitcher = Stitcher::createDefault(try_use_gpu);
stitcher.setPanoConfidenceThresh(0.8);
Stitcher::Status status = stitcher.stitch(imgs, pano);

if (status != Stitcher::OK)
{
cout << "Can't stitch images, error code = " << status << endl;
return -1;
}

imwrite(result_name, pano);

return 0;
}

我总是收到一条错误消息:“无法拼接图像,错误代码 = 1”,所以系统说它需要更多图像。调试时,我看到图像已正确加载,然后矢量 imgs 已正确创建。可能是什么原因?我的计算也持续了很长时间(2 秒)...

最佳答案

OpenCV 的拼接器模块使用图像特征来创建精确对齐。

根据经验法则,必须拼接的两个图像之间应该有大约 20-30% 的重叠。如果相机视野之间没有明显的重叠,则图像交叉点之间将没有足够的特征。您提供的图像具有相当统一的背景,以便拼接器模块在图像交叉点中找到足够的特征。您将需要考虑增加图像交叉点中的特征以对齐图像。

关于opencv - 无法在 opencv c++ 中使用 Stitcher 类拼接许多图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42859249/

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