📜  对 `cv::inRange 的未定义引用 - 汇编(1)

📅  最后修改于: 2023-12-03 15:09:28.005000             🧑  作者: Mango

cv::inRange 的未定义引用 - 汇编

问题描述

当使用OpenCV的cv::inRange函数来进行像素值筛选时,有些人可能会遇到以下错误:

undefined reference to `cv::inRange(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&)'

这是因为编译器无法找到cv::inRange的实现。

解决方法
1. 添加OpenCV库的链接

这个错误通常是由于链接OpenCV库失败导致的。因此,我们需要确保正确链接库。

如果您使用的是CMake,可以使用以下命令来链接OpenCV库:

find_package(OpenCV REQUIRED)
link_libraries(${OpenCV_LIBS})

如果您正在使用命令行编译代码,则需要添加以下参数:

g++ your_file.cpp -o your_app `pkg-config --cflags --libs opencv`
2. 检查OpenCV版本

另一个可能的问题是使用的OpenCV版本太低,该版本不支持cv::inrange函数。

请确保您使用的是正确的OpenCV版本,并尝试更新到最新版本。

3. 检查头文件和命名空间

确保在代码中包含正确的头文件和命名空间。

#include <opencv2/opencv.hpp>
using namespace cv;
4. 确保正确安装OpenCV

最后,请确保您正确安装了OpenCV。您可以验证是否已正确安装该库,打开终端并输入以下命令:

pkg-config --modversion opencv

如果运行时出错,则需要重新安装OpenCV。

总结

cv::inRange是OpenCV中非常常用的函数之一,可以让我们轻松地进行像素值筛选。在使用该函数时,如果遇到上述错误,请仔细排查上述问题,并确保正确链接OpenCV库,使用正确的OpenCV版本,包含正确的头文件和命名空间,以及正确安装OpenCV。