Невозможно сшить много изображений с помощью класса Stitcher в opencv C++

Я хочу сшить много изображений ( 25) в одно изображение прямой поверхности пластиковой детали. Изображения выглядят так:

Я пытаюсь использовать форму класса 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", поэтому система говорит, что ей нужно больше изображений. При отладке я вижу, что изображения загружаются правильно, а затем, векторные изображения правильно создаются. Какие могут быть причины? Мой расчет тоже длился довольно долго (2 с)...

1 ответ

Модуль брошюровщика OpenCV использует функции изображений для создания точного выравнивания.

Как правило, между двумя изображениями, которые должны быть сшиты, должно быть около 20-30% перекрытия. Если между полями камеры нет значительного перекрытия, между пересечениями изображений будет недостаточно функций. Изображения, которые вы дали, имеют достаточно равномерный фон для модуля брошюровщика, чтобы найти достаточные особенности в пересечении изображений. Вам нужно будет взглянуть на увеличение функций на пересечении изображений, чтобы выровнять изображения.

Другие вопросы по тегам