2015-08-13 4 views
1

При попытке использовать пороговую функцию в OpenCV 3, есть ошибка связывания, которые выглядят следующим образом:Связывание ошибки при использовании некоторых функций OpenCV «порог» Eclipse

./src/OpenCV.o: неопределенная ссылка на символ '' _ZN2cv9thresholdERKNS_11_InputArrayERKNS_12_OutputArrayEddi

марка: *** [OpenCV]

примечание: '_ZN2cv9thresholdERKNS_11_InputArrayERKNS_12_OutputArrayEddi' определяется в ДСО /home/muhammadaly/Documents/opencv-3.0.0/release/lib/libopencv_imgproc.so.3.0 поэтому попробуйте добавить его в командную строку компоновщика

ответ

0

Я решил эту проблему 5 минут назад. У вас отсутствует компоновщик в свойствах вашего проекта. Прежде всего, следуйте этим инструкциям, чтобы убедиться, что ваш путь и библиотеки добавлены. Кроме того, в нижней части статьи есть видео на YouTube. http://rodrigoberriel.com/2014/10/using-opencv-3-0-0-with-eclipse/ Как вы можете заметить, мы должны добавить все вручную.

cv::threshold(src,dst,128.0,255.0,cv::THRESH_BINARY); 

ПРИМЕЧАНИЕ. Эти методы уже объяснены в статье, которую я изложил выше. Я просто конкретный для решения.

Вы пытаетесь использовать эту функцию. Первое, что нужно сделать, - выяснить, какой файл .hpp включить. В Eclipse нажмите ctrl и щелкните по функции, которую он откроет связанный файл, в нашем случае это файл imgproc.hpp. Поэтому добавьте это в свой класс #include "opencv2/imgproc.hpp"

Мы еще не закончили. Нам также нужно связать их. В Eclipse Project -> Properties -> C/C++ Build -> Settings, а затем на вкладке «Настройка инструмента» найдите GCC C++ Linker -> Libraries. Библиотеки (-l) добавить opencv_imgproc.

Как я нашел opencv_imgproc: В консоли напишите pkg-config --libs opencv. В моем случае выход, как это (он не может быть такой же выход, потому что я использую Cuda тоже.):

--libs OpenCV -L/USR/местные/Библиотека -lopencv_cudabgsegm -lopencv_cudaobjdetect -lopencv_cudastereo -lopencv_shape -lopencv_stitching -lopencv_cudafeatures2d -lopencv_superres -lopencv_cudacodec -lopencv_videostab -lopencv_cudaoptflow -lopencv_cudalegacy -lopencv_calib3d -lopencv_features2d -lopencv_objdetect -lopencv_highgui -lopencv_videoio -lopencv_photo -lopencv_imgcodecs -lopencv_cudawarping -lopencv_cudaimgproc -lopencv_cudafilters -lopencv_video -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_cudaarithm -lopencv_core -lopencv_hal -lopencv_cudev

Вам просто нужно удалить -lo и просто использовать opencv_NAMEOFTHEFILE

Эти шаги необходимо выполнить, если вы используете новую функцию, которая еще не связана.