Ошибка в сшивателе() в OpenCv

У меня есть этот код:

#include <opencv2\stitching\stitcher.hpp>

int Stitching()
{
Stitcher m_stitcher = m_stitcher.createDefault(false);

vector<Mat> images; 
Mat img1 = imread("0.jpg"); //read image 0
Mat img2 = imread("1.jpg"); //read image 1
Mat Result;

//add images to the array
images.push_back(img1);
images.push_back(img2);

m_stitcher.stitch(images, Result);
imwrite("panorama.jpg",Result);
return 0;
}

После сборки я получаю эту ошибку:

Ошибка 4 ошибка C2248: 'cv::Stitcher::Stitcher': невозможно получить доступ к частному члену, объявленному в классе 'cv::Stitcher' C:\Users\Desktop\Projects\SamplePanorama - PanoramaStitch\SamplePanorama\StitchEngine.cpp 602

Что я должен добавить, чтобы стежок () работал правильно?


person Vinshi    schedule 19.12.2012    source источник


Ответы (1)


Похоже, что ваш класс Stitcher не имеет общедоступного конструктора. Если бы это был класс, которым вы владели, вам нужно было бы предоставить ему открытый конструктор, чтобы иметь возможность создать экземпляр Stitcher. Однако похоже, что это сторонняя библиотека, быстрый поиск в гугле говорит о наличии этого метода в Stitcher:

static Stitcher createDefault(bool try_use_gpu = false);

Чтобы создать экземпляр Stitcher, вам, вероятно, придется сделать что-то вроде:

Stitcher m_stitcher = Stitcher::CreateDefault();

Изменить: чтобы исправить ошибки вашего компоновщика, вам, вероятно, потребуется добавить правильные файлы lib в список входных данных для вашего компоновщика. Эта ссылка должна помочь вам настроить это, http://opencv.willowgarage.com/wiki/InstallGuide

person Tejas Sharma    schedule 19.12.2012
comment
я пробовал функцию createDefault(). Получение этой ошибки: error LNK2019: неразрешенный внешний символ public: enum cv::Stitcher::Status __thiscall cv::Stitcher::stitch(class cv::_InputArray const &, class cv::_OutputArray const &) (?stitch@Stitcher @cv@@QAE?AW4Status@12@ABV_InputArray@2@ABV_OutputArray@2@@Z), на который ссылается функция public: int __thiscall CStitchEngine::PanoramaStitch(void) (?PanoramaStitch@CStitchEngine@@QAEHXZ) - person Vinshi; 20.12.2012
comment
и это тоже: ошибка LNK2019: неразрешенный внешний символ общественность: int __thiscall CStitchEngine::PanoramaStitch(void) (?PanoramaStitch@CStitchEngine@@QAEHXZ) - person Vinshi; 20.12.2012
comment
@Vinshi, вы пытаетесь получить доступ к статическому члену (конструктору) с неправильным оператором - . вместо ::. Посмотрите на ответ еще раз и внимательно прочитайте. - person ArtemStorozhuk; 20.12.2012
comment
Кроме того, вы уверены, что все настроили правильно? Я думаю, вам нужно создать исходный код opencv, а затем добавить файлы lib в качестве входных данных компоновщика. Вы сделали это? В качестве альтернативы, это, вероятно, было бы проще stackoverflow.com /вопросы/2985676/ - person Tejas Sharma; 20.12.2012