当我尝试在 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
}
将代码移动到另一台机器时不会出现路径问题。
关于c++ - 将 OpenCV 库与 ubuntu 上的 Qt creator 链接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33311681/