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

时间:2015-10-23 21:30:09

标签: c++ qt opencv ubuntu

当我尝试在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

2 个答案:

答案 0 :(得分:6)

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

在Linux上的qt项目中包含openCV的最佳方法是将pro文件添加到:

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

将代码移动到另一台计算机时,您将免于路径问题。

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

答案 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

您可以与自己比较。可能缺少某些东西。