尝试在OpenCV 3中使用阈值功能时,会出现如下链接错误:
./ src / OpenCV.o:对符号'_ZN2cv9thresholdERKNS_11_InputArrayERKNS_12_OutputArrayEddi'的未定义引用
make:*** [OpenCV]
注意:'_ZN2cv9thresholdERKNS_11_InputArrayERKNS_12_OutputArrayEddi'在DSO /home/muhammadaly/Documents/opencv-3.0.0/release/lib/libopencv_imgproc.so.3.0中定义,因此请尝试将其添加到链接器命令行
答案 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中 - >属性 - > C / C ++ Build - >然后在工具设置选项卡中的设置找到GCC C ++ Linker - >库。库(-l)添加opencv_imgproc
。
我是如何找到opencv_imgproc
的:在控制台中写pkg-config --libs opencv
。在我的情况下输出是这样的(它可能不是相同的输出,因为我也使用Cuda。):
- libs opencv -L在/ usr / local / lib目录-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
当您使用尚未链接的新功能时,必须执行这些步骤。