QT + OpenCV - неопределенная ссылка на cv :: stereoBM :: create (int, int) - PullRequest
1 голос
/ 30 октября 2019

Мне нужна ваша помощь для решения проблемы в OpenCV cv :: StereoBM, потому что я получил ошибку, когда попытался скомпилировать код ниже:

 std::string myImgLeftString = myImgLeft.toUtf8().constData();
    std::string myImgRightString = myImgRight.toUtf8().constData();
    cv::Mat img1 = cv::imread(myImgLeftString,CV_LOAD_IMAGE_COLOR);
    cv::Mat img2 = cv::imread(myImgRightString,CV_LOAD_IMAGE_COLOR);
    cv::Mat img3;
    cv::Mat img1grey, img2grey;
    cv::cvtColor(img1,img1grey,CV_BGR2GRAY);
    cv::cvtColor(img2,img2grey,CV_BGR2GRAY);

    cv::Ptr<cv::StereoBM> match = cv::StereoBM::create(0,21);
    match->compute(img1grey,img2grey,img3);

Это дает мне: undefiend ссылку на cv :: StereoBM:: create (int, int) Но я уже включил все необходимые и ненужные заголовки

#include <opencv2/core.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/features2d/features2d.hpp>
#include <opencv2/calib3d.hpp>
#include <opencv2/imgproc.hpp>
#include <stdio.h>
#include <iostream>
#include <opencv2/core/affine.hpp>
#include "opencv2/core/hal/intrin.hpp"
#include "opencv2/core/utility.hpp"
#include "opencv2/ximgproc.hpp"

И я добавил две строки кода в мой файл .pro

LIBS += -L ./opt/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs
INCLUDEPATH += -I /opt/local/stow/opencv-3.4.3

Я не знаю, что не так, пожалуйста, помогите, спасибо.

1 Ответ

1 голос
/ 30 октября 2019

cv::StereoBM находится в calib3d модуле OpenCV, поэтому вам нужно сослаться на файл lib этого модуля, чтобы добавить -lopencv_calib3d к LIBS в вашем .pro-файле:

LIBS += -L ./opt/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -lopencv_calib3d

Не забудьте запустить qmake после изменения .pro-файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...