c++ - 将 OpenCV 库与 ubuntu 上的 Qt creator 链接起来

标签 c++ qt opencv ubuntu

当我尝试在 Ubuntu 上链接 OpenCV 库时,出现了一些我无法理解的问题。

我在 Ubuntu 14.04 上使用了 OpenCV 2.4.11 和 Qt creator。

在我的项目文件中,我写了

INCLUDEPATH += /usr/local/include/opencv
INCLUDEPATH += /usr/local/include/opencv2

LIBS += -L/usr/local/lib\
     -lopencv_calib3d\
     -lopencv_contrib\
     -lopencv_core\
     -lopencv_features2d \
     -lopencv_flann\
     -lopencv_gpu\
     -lopencv_highgui\
     -lopencv_imgproc\
     -lopencv_legacy\
     -lopencv_ml\
     -lopencv_nonfree\
     -lopencv_objdetect\
     -lopencv_ocl\
     -lopencv_photo\
     -lopencv_stitching\
     -lopencv_superres\
     -lopencv_ts\
     -lopencv_video\
     -lopencv_videostab

但是在构建项目时出现了很多错误,比如undefined reference to 'cvCreateMat'。显然,OpenCV 没有正确链接到我的项目。

于是上网搜索,尝试了一个可能的解决方案,就是

CONFIG += link_pkgconfig
PKGCONFIG += opencv

令我惊讶的是,它有效并且没有再次出现链接错误。

但是,我仍然不明白为什么它不能以第一种方式工作,因为我已经在 Mac OS X 上以这种方式成功地设置了我的项目。为什么它现在不能在我的 Ubuntu 上工作?


我尝试了pkg-config --libs opencv,结果是

-L/usr/local/lib -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab -ltbb -lXext -lX11 -lICE -lSM -lGL -lGLU -lrt -lpthread -lm -ldl

最佳答案

您错过了一个库:-lopencv_nonfree

在 Linux 上的 qt 项目中包含 openCV 的最佳方法是在 pro 文件中添加如下内容:

# add open CV
unix {
    CONFIG += link_pkgconfig
    PKGCONFIG += opencv
}

将代码移动到另一台机器时不会出现路径问题。

https://stackoverflow.com/a/17137998/1387438

关于c++ - 将 OpenCV 库与 ubuntu 上的 Qt creator 链接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33311681/

相关文章:

c++ - 编译 libcvd 时出现 undefined reference 错误

c++ 当前日期和指针问题!

c++ - 从未捕获的异常中获取堆栈跟踪?

c++ - 无法将 QMetaMethod 与 lambda 连接起来

python - 多尺度模板匹配不正确

C++ stof函数转换为整数

c++ - Qt:有共享文件夹的类吗?

c++ - QProcess 卡住 GUI

opencv - OpenCV 2.4.11 和 3.0.0 有什么区别

python - 如何检测 table 的水平线和垂直线并消除噪音?