Связать библиотеку OpenCV с создателем Qt в Ubuntu

Когда я попытался связать библиотеку OpenCV в Ubuntu, возникли некоторые проблемы, которые я не могу понять.

Я использовал OpenCV 2.4.11 и Qt creator на Ubuntu 14.04.

В моем файле проекта я написал

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

0

Решение

Вы пропустили одну библиотеку: -lopencv_nonfree

Лучший способ включить openCV в проекты qt в Linux — добавить в pro-файл что-то вроде:

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

При переносе кода на другую машину у вас не возникнет проблем с путями.

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

6

Другие решения

Вот что ссылки 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

Вы можете сравнить с вашим. Что-то может не хватать.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector