在ubuntu上将OpenCV库与Qt创建者链接

Gal*_*axy 0 c++ ubuntu qt opencv

当我试图在Ubuntu上链接OpenCV库时,发生了一些我无法理解的问题.

我在Ubuntu 14.04上使用了OpenCV 2.4.11和Qt创建器.

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

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
Run Code Online (Sandbox Code Playgroud)

但是在构建项目时存在许多错误,例如undefined reference to 'cvCreateMat'.显然,OpenCV没有正确地链接到我的项目.

因此,我在网上搜索并尝试了一种可能的解决方案,就是这样

CONFIG += link_pkgconfig
PKGCONFIG += opencv
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,它工作,并没有再次链接错误.

但是,我仍然无法理解为什么它不能以第一种方式工作,因为我已经在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
Run Code Online (Sandbox Code Playgroud)

Mar*_*k R 6

你错过了一个图书馆: -lopencv_nonfree

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

# add open CV
unix {
    CONFIG += link_pkgconfig
    PKGCONFIG += opencv
}
Run Code Online (Sandbox Code Playgroud)

将代码移动到另一台机器时,您将免于路径问题.

/sf/answers/1199659891/