[英]Link OpenCV library with Qt creator on ubuntu
When I tried to link the OpenCV library on Ubuntu, some problems happened which I cannot understand.当我尝试在 Ubuntu 上链接 OpenCV 库时,发生了一些我无法理解的问题。
I used OpenCV 2.4.11 and Qt creator on Ubuntu 14.04.我在 Ubuntu 14.04 上使用了 OpenCV 2.4.11 和 Qt creator。
In my project file, I wrote在我的项目文件中,我写道
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
But there were many errors when building the project, such as undefined reference to 'cvCreateMat'
.但是在构建项目的时候出现了很多错误,比如
undefined reference to 'cvCreateMat'
。 Obviously, the OpenCV wasn't linked to my project properly.显然,OpenCV 没有正确链接到我的项目。
Thus, I searched online and tried a possible solution, and that is因此,我在网上搜索并尝试了一个可能的解决方案,那就是
CONFIG += link_pkgconfig
PKGCONFIG += opencv
To my surprise, it works and no linking errors again.令我惊讶的是,它有效并且不再出现链接错误。
However, I still cannot understand why it didn't work in the first way, since I have successfully set up my project in that way on Mac OS X. Why doesn't it work on my Ubuntu now?但是,我仍然无法理解为什么它不能以第一种方式工作,因为我已经在 Mac OS X 上以这种方式成功设置了我的项目。为什么它现在不能在我的 Ubuntu 上工作?
I tried pkg-config --libs opencv
, the result was我试过
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
You've missed one library: -lopencv_nonfree
您已经错过了一个图书馆:
-lopencv_nonfree
Best way to include openCV in qt projects on Linux is to add to pro file something like: 在Linux上的qt项目中包括openCV的最佳方法是在pro文件中添加以下内容:
# add open CV
unix {
CONFIG += link_pkgconfig
PKGCONFIG += opencv
}
You will be free of path problems when moving code to another machine. 将代码移至另一台计算机时,您将摆脱路径问题。
https://stackoverflow.com/a/17137998/1387438 https://stackoverflow.com/a/17137998/1387438
This is what pkgconfig links: 这是pkgconfig链接的内容:
luca@luca-virtual-machine:~$ pkg-config --libs 'opencv'
/usr/lib/x86_64-linux-gnu/libopencv_calib3d.so -lopencv_calib3d /usr/lib/x86_64-linux-gnu/libopencv_contrib.so -lopencv_contrib /usr/lib/x86_64-linux-gnu/libopencv_core.so -lopencv_core /usr/lib/x86_64-linux-gnu/libopencv_features2d.so -lopencv_features2d /usr/lib/x86_64-linux-gnu/libopencv_flann.so -lopencv_flann /usr/lib/x86_64-linux-gnu/libopencv_gpu.so -lopencv_gpu /usr/lib/x86_64-linux-gnu/libopencv_highgui.so -lopencv_highgui /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so -lopencv_imgproc /usr/lib/x86_64-linux-gnu/libopencv_legacy.so -lopencv_legacy /usr/lib/x86_64-linux-gnu/libopencv_ml.so -lopencv_ml /usr/lib/x86_64-linux-gnu/libopencv_objdetect.so -lopencv_objdetect /usr/lib/x86_64-linux-gnu/libopencv_ocl.so -lopencv_ocl /usr/lib/x86_64-linux-gnu/libopencv_photo.so -lopencv_photo /usr/lib/x86_64-linux-gnu/libopencv_stitching.so -lopencv_stitching /usr/lib/x86_64-linux-gnu/libopencv_superres.so -lopencv_superres /usr/lib/x86_64-linux-gnu/libopencv_ts.so -lopencv_ts /usr/lib/x86_64-linux-gnu/libopencv_video.so -lopencv_video /usr/lib/x86_64-linux-gnu/libopencv_videostab.so -lopencv_videostab
You can compare with yours. 您可以与您的比较。 Something may be missing.
可能缺少某些东西。
go to your “.pro” file and add the following lines before “SOURCES”:转到您的“.pro”文件并在“SOURCES”之前添加以下几行:
INCLUDEPATH += /usr/local/include/opencv
LIBS += -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_highgui
you have to add all the libraries you're going to need in your project.你必须在你的项目中添加你需要的所有库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.