繁体   English   中英

Qt Creator 在链接到 OpenCV 时给我一个错误

[英]Qt Creator gives me an error when linking to OpenCV

我在网上找到了一个简单的 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} )

我还需要设置其他一些路径吗?

首先,检查你是否已经安装了 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

这些小的变化对我有用。

我也在使用 Opencv 处理 Qt,我使用这些行将 opencv 添加到 Qt 到.pro文件:

INCLUDEPATH += /usr/local/include/opencv
LIBS += `pkg-config --cflags --libs opencv`

您还应该通过终端检查 opencv 安装:

pkg-config --modversion opencv 

如果出现错误,则说明安装有问题。

编辑:如果您安装了 opencv4.xx,则应将上述命令中的"opencv"一词更改为"opencv4"

问题解决了。

这件事发生在我身上的原因是我首先做了

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。

尝试这个:

CONFIG += opencv


INCLUDEPATH += /usr/local/include/opencv4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM