使用某些 OpenCV 函数“阈值”Eclipse 时出现链接错误

Posted

技术标签:

【中文标题】使用某些 OpenCV 函数“阈值”Eclipse 时出现链接错误【英文标题】:Linking error when using some OpenCV functions "threshold" Eclipse 【发布时间】:2015-08-13 15:38:33 【问题描述】:

在 OpenCV 3 中尝试使用阈值函数时,出现如下所示的链接错误:

./src/OpenCV.o:未定义对符号“_ZN2cv9thresholdERKNS_11_InputArrayERKNS_12_OutputArrayEddi”的引用

制作:*** [OpenCV]

注意:“_ZN2cv9thresholdERKNS_11_InputArrayERKNS_12_OutputArrayEddi”在 DSO /home/muhammadaly/Documents/opencv-3.0.0/release/lib/libopencv_imgproc.so.3.0 中定义,因此请尝试将其添加到链接器命令行

【问题讨论】:

【参考方案1】:

我在 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 然后在 Tool Setting 选项卡中找到 GCC C++ Linker -> Libraries。库 (-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

当您使用尚未链接的新功能时,必须执行这些步骤。

【讨论】:

以上是关于使用某些 OpenCV 函数“阈值”Eclipse 时出现链接错误的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV—图像阈值

opencv中'imquantize'函数的实现

python opencv图像阈值处理

opencv阈值处理--threshold函数自适应阈值处理Otsu处理(大津法)

OpenCV实战(10)——积分图像详解

Python----opencv计算细胞核质比轮廓描绘椭圆拟合GUI手动调整阈值自定义函数自动检测阈值