Qt Creator выдает ошибку при ссылке на OpenCV - PullRequest
1 голос
/ 25 марта 2019

У меня есть простая программа OpenCV, найденная в сети.Я пытаюсь скомпилировать его в Qt Creator.Исходный код следующий (main.cpp):

#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

int main( int argc, char** argv )
{
    VideoCapture cap(0); // open the default camera
        if(!cap.isOpened())  // check if we succeeded
            return -1;

        Mat edges;
        namedWindow("edges",1);
        for(;;)
        {
            Mat frame;
            cap >> frame; // get a new frame from camera
            cvtColor(frame, edges, COLOR_BGR2GRAY);
            GaussianBlur(edges, edges, Size(7,7), 1.0, 1.0);
            Canny(edges, edges, 0, 30, 3);
            imshow("edges", edges);
            if(waitKey(30) >= 0) break;
        }
        // the camera will be deinitialized automatically in VideoCapture destructor
        return 0;
}

Вот мой .pro-файл:

TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt

CONFIG += link_pkgconfig
PKGCONFIG += opencv

SOURCES += main.cpp
INCLUDEPATH += /usr/local/include/opencv2

LIBS += -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_highgui -lopencv_shape -lopencv_videoio

При сборке проекта я получаю следующую ошибку компоновщика (плюсдругие подобные):

error: undefined reference to `cv::VideoCapture::VideoCapture(int)'

Однако, при использовании простого файла CMake, он прекрасно собирается и работает.Мой CMakeLists.txt довольно прост:

cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage main.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )

Есть ли какие-то другие пути, которые мне нужно настроить?

Ответы [ 3 ]

1 голос
/ 26 марта 2019

Я также работаю над Qt с Opencv, и я добавил opencv в Qt, используя это

LIBS += `pkg-config --cflags --libs opencv`

Но сначала вы должны проверить свой код через Gedit и скомпилировать его с помощью терминала, если вы снова получите ту же ошибку, касающуюся установки Opencv.

1 голос
/ 25 марта 2019

Прежде всего, убедитесь, что вы установили все зависимости OpenCV.Вероятно, вам также потребуется установить FFmpeg.

Затем заменить:

LIBS += -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_highgui -lopencv_shape -lopencv_videoio

На это:

LIBS += -L/usr/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -lopencv_shape -lopencv_videoio

Вам также необходимо добавить конкретную конфигурацию OpenCV:

CONFIG += opencv

Или, альтернативно:

unix: CONFIG += link_pkgconfig
unix: PKGCONFIG += opencv

Это работает для меня с этими небольшими изменениями.

0 голосов
/ 25 марта 2019

Проблема решена.

Причина, по которой это случилось со мной, заключается в том, что сначала я сделал

sudo apt install libopencv-highgui-dev

и

sudo apt install libopencv-dev

, а затем скомпилировал OpenCV 2.4.13 изисходники и установили его (потому что мне нужна была именно эта версия).

С cmake он связан с OpenCV 4.1.0, но с Qt Creator он связан с OpenCV 2.4.13.Решением было удалить OpenCV и установить только версию 2.4.13.

...