当我尝试在Ubuntu上链接OpenCV库时,出现了一些我无法理解的问题。
我在Ubuntu 14.04上使用了OpenCV 2.4.11和Qt创建者。
在我的项目文件中,我写了
figure;
plot(x,y);
axis off
img = frame2im(getframe(gca));
imwrite(img,'myImage.png');
但是在构建项目时存在许多错误,例如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
。显然,OpenCV没有正确地链接到我的项目。
因此,我在网上搜索并尝试了一种可能的解决方案,那就是
undefined reference to 'cvCreateMat'
令我惊讶的是,它的工作原理并没有再次出现链接错误。
然而,我仍然无法理解为什么它不能以第一种方式工作,因为我已经在Mac OS X上以这种方式成功设置了我的项目。为什么它现在不适用于我的Ubuntu?
我尝试了CONFIG += link_pkgconfig
PKGCONFIG += opencv
,结果是
pkg-config --libs opencv
答案 0 :(得分:6)
您错过了一个图书馆:-lopencv_nonfree
在Linux上的qt项目中包含openCV的最佳方法是将pro文件添加到:
# add open CV
unix {
CONFIG += link_pkgconfig
PKGCONFIG += opencv
}
将代码移动到另一台计算机时,您将免于路径问题。
答案 1 :(得分:0)
这就是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
您可以与自己比较。可能缺少某些东西。