讲解cmake find_package opencv 找不到

这篇具有很好参考价值的文章主要介绍了讲解cmake find_package opencv 找不到。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

讲解cmake find_package opencv找不到

问题描述

问题原因

解决方法

步骤 1:确认OpenCV已正确安装

步骤 2:配置OpenCV的安装路径

Windows平台

macOS和Linux平台

步骤 3:重新运行CMake

使用方法

工作原理

配置库依赖

总结


讲解cmake find_package opencv找不到

在使用CMake来构建项目时,有时候会遇到find_package命令无法找到OpenCV库的情况,本文将详细介绍这个问题的原因和解决方法。

问题描述

当我们在CMakeLists.txt中使用find_package(OpenCV REQUIRED)命令时,期望CMake能够在系统中找到已安装的OpenCV库并添加到项目中。然而,执行CMake时可能会遇到以下类似的错误信息:

plaintextCopy code
CMake Error at CMakeLists.txt:10 (find_package):
Could not find a package configuration file provided by "OpenCV" with any of
the following names:
  OpenCVConfig.cmake
  opencv-config.cmake
...

问题原因

这个问题通常是由以下原因引起的:

  1. 没有正确安装OpenCV库:在执行find_package之前,请确保您已经正确地安装了OpenCV库,并且可以通过命令行访问到。
  2. OpenCV库的路径没有正确配置:CMake无法找到OpenCV库是因为您没有正确配置OpenCV的安装路径。

解决方法

要解决这个问题,可以采取以下步骤:

步骤 1:确认OpenCV已正确安装

首先,确保您已经正确地安装了OpenCV库。您可以通过在终端中运行以下命令来验证:

plaintextCopy code
pkg-config --modversion opencv

如果OpenCV已正确安装,您应该能够看到安装的OpenCV版本号。

步骤 2:配置OpenCV的安装路径

要让CMake能够找到OpenCV库,您需要配置OpenCV的安装路径。这可以通过设置OpenCV_DIR环境变量实现:

Windows平台

打开命令提示符,并运行以下命令:

plaintextCopy code
setx -m OpenCV_DIR "<path_to_opencv_installation>"

确保将<path_to_opencv_installation>替换为实际安装路径。

macOS和Linux平台

打开终端,并运行以下命令(每次打开一个新的终端都需要运行这个命令,或者将其添加到bashrc或zshrc文件中):

plaintextCopy code
export OpenCV_DIR="<path_to_opencv_installation>"

确保将<path_to_opencv_installation>替换为实际安装路径。

步骤 3:重新运行CMake

完成上述步骤后,重新运行CMake。此时,它应该能够正确找到OpenCV库,并将其添加到项目中。

当使用CMake构建一个使用OpenCV的项目时,可以按照以下示例代码进行配置。 首先,将以下代码保存为CMakeLists.txt文件:

cmakeCopy code
cmake_minimum_required(VERSION 3.12)
project(OpenCVExample)
# 寻找OpenCV库
find_package(OpenCV REQUIRED)
# 将编译目标指定为可执行文件,并链接OpenCV库
add_executable(opencv_example main.cpp)
target_link_libraries(opencv_example PRIVATE ${OpenCV_LIBS})

接下来,创建一个名为main.cpp的文件,并添加如下示例代码:

cppCopy code
#include <opencv2/opencv.hpp>
#include <iostream>
int main()
{
    // 读取图像文件
    cv::Mat image = cv::imread("image.jpg");
    
    if (image.empty())
    {
        std::cout << "无法读取图像文件!" << std::endl;
        return -1;
    }
    
    // 在窗口中显示图像
    cv::imshow("Image", image);
    cv::waitKey(0);
    
    return 0;
}

在完成以上步骤后,您可以按照以下方式进行构建和运行项目:

  1. 在项目根目录下创建一个名为build的文件夹,并进入该文件夹。
  2. 执行cmake ..命令来生成构建文件。
  3. 执行make命令来编译项目。
  4. 执行./opencv_example命令来运行可执行文件。

find_package是CMake中用于查找、定位和导入第三方库的命令。它可以在项目中自动查找所需的库,并将其配置为CMake项目的依赖项。这使得在CMake中使用第三方库变得更加方便和可移植。

使用方法

find_package命令的基本语法是:

cmakeCopy code
find_package(<Package> [version] [EXACT] [QUIET] [MODULE]
  [REQUIRED] [[COMPONENTS] [components...]]
  [OPTIONAL_COMPONENTS components...]
  [NO_POLICY_SCOPE]
)
  • <Package>:要查找的包的名称,例如OpenCV,在CMake中有一些常见的已定义的包名称可以使用,同时也可以通过自定义模块文件进行查找。
  • [version]:可选参数,指定需要的库的版本号。
  • [EXACT]:可选参数,指定版本号是否需要精确匹配。
  • [QUIET]:可选参数,如果找不到包时,禁止显示错误信息。
  • [MODULE]:可选参数,当使用自定义模块文件进行查找时使用。
  • [REQUIRED]:可选参数,表示这个库是项目的必需依赖项,如果找不到将引发错误。
  • [[COMPONENTS] [components...]]:可选参数,指定要查找的库的特定组件。例如,如果库有可选的子模块,例如OpenCV的opencv_core、opencv_imgproc等,可以使用这个参数指定特定的组件。
  • [OPTIONAL_COMPONENTS components...]:可选参数,指定要查找的库的可选组件。
  • [NO_POLICY_SCOPE]:可选参数,指定要求CMake 3.12或以上版本。

工作原理

find_package命令会按照预定的顺序在系统中查找指定的库。它首先搜索系统目录,然后再根据系统的路径设置和模块文件的位置查找库。如果找到了相应的包,find_package会为项目设置一些变量,使得可以使用这个库。 查找过程中,CMake会根据预定义的一些规则来确定找到的库的位置,这些规则包括查找文件、环境变量、预定义路径等。

配置库依赖

使用find_package命令来查找并配置库依赖非常重要。一旦找到所需的库,CMake会设置相应的变量(如<PackageName>_FOUND<PackageName>_INCLUDE_DIRS<PackageName>_LIBRARIES等),可以在项目中使用这些变量来链接库和包含头文件。 例如,使用find_package(OpenCV REQUIRED)命令查找并配置OpenCV库依赖后,可以使用${OpenCV_INCLUDE_DIRS}变量来包含OpenCV的头文件,并使用${OpenCV_LIBRARIES}变量来链接OpenCV库。

find_package是CMake中用于查找、定位和导入第三方库的重要命令。它通过自动化查找和配置库依赖,使得在CMake项目中使用第三方库变得更加方便和可移植。了解和正确使用find_package命令可以帮助我们处理和管理项目的依赖项。

总结

无法找到OpenCV库是由OpenCV的安装路径未正确配置引起的。通过确认OpenCV已正确安装,并设置正确的OpenCV_DIR环境变量,可以解决这个问题。文章来源地址https://www.toymoban.com/news/detail-828936.html

到了这里,关于讲解cmake find_package opencv 找不到的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CMake Error at /opt/ros/noetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package)

    在ros中catkin_make功能包时遇到以下错误 解决办法: 终端下执行

    2024年02月12日
    浏览(34)
  • CMake Error at CMakeLists.txt:5 (find_package):By not providing “FindOpenCV.cmake“ in CMAKE_MODULE

    CMake Error at CMakeLists.txt:5 (find_package): By not providing \\\"FindOpenCV.cmake\\\" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by \\\"OpenCV\\\", but CMake did not find one.  CMake Error at CMakeLists.txt:5 (find_package): By not providing \\\"FindOpenCV.cmake\\\" in CMAKE_MODULE_PATH this project has asked CMake to

    2024年04月27日
    浏览(35)
  • 20230822 Windows上使用find_package引入OpenCV报错

    打开Cmake项目时,find_package 报错: 大概率原项目是在 Linux 上开发的,Linux 上安装的 OpenCV 默认添加到了系统环境里,所以可以直接使用,但是 Windows 上的系统环境变量里没有OpenCV导致的 有两种解决方案 1. 将 OpenCV 添加到系统环境变量中 将 OpenCV 添加到系统环境变量里,这样

    2024年02月11日
    浏览(29)
  • CMake语法-find_package-查找库-pkg_check_modules-外部库信息-find_path-查找路径-find_library-查找库

    find_package 是 CMake 中的一个命令,用于在构建系统中查找和引入第三方库。当你在项目中使用了某个外部库(如 Boost、Eigen、OpenCV 等)时,可以利用 find_package 命令来查找并配置这些库的路径和其他相关设置。 基本语法如下: package_name : 要查找的包的名称。 version : (可选)

    2024年04月09日
    浏览(58)
  • 解决执行find_package(PCL, ...时遇到CMakeFindDependencyMacro.cmake里find_dependency(Qt5WebKit 5.212.0 EXACT报错

    写的CMakeLists.txt里有这么一句: find_package(PCL 1.8 REQUIRED COMPONENTS common io visualization) 在执行cmake 命令时报下面的错: CMake Error at /usr/share/cmake-3.10/Modules/CMakeFindDependencyMacro.cmake:48 (find_package):   Found package configuration file:     /root/anaconda3/lib/cmake/Qt5WebKit/Qt5WebKitConfig.cmake   but it set Qt5

    2024年01月24日
    浏览(32)
  • Clion(2023)+QT(6.5)+cmake+vcpkg+Opencv(4.7)环境安装与使用

    用习惯了Clion,智能提示很棒,就不想用Qt自带的creator编辑器,并且新版的Clion支持编辑ui文件。于是搜罗了一下教程搭配一下环境安装,其实最重要的还是cmakelist的编写。 QT现在只能在线下载器安装。下载器的下载地址: 无脑最新的就好,需要注册账号,也很方便。安装时需

    2024年02月13日
    浏览(27)
  • Qt利用VCPKG和CMake和OpenCV和Tesseract实现中英文OCR

      今天看 OpenCV 方面的教程,pdf 格式的,因为一些强迫症的习惯,喜欢添加一些书签,手动是不太愿意的,自然就想到利用OCR来实现。   想要自己编码实现OCR,方案比较简单就是 Tesseract 。单独使用 Tesseract 也可以,但最好利用 OpenCV 来进行图像方面的处理,一大堆方法可

    2024年02月05日
    浏览(33)
  • webpack -v报错:Cannot find module ‘webpack-cli/package.json‘

    -D安装了webpack和webpack-cli,-g安装了webpack和webpack-cli,但是webpack -v的时候仍然提示需要安装webpack-cli,并且安装之后会报错:  看提示应该是webpack-cli/package.json的位置获取不到正确的,但是并不知道为什么获取不到,查了一圈,最后看了这篇文章得到了启发:WebPack 安装出现

    2023年04月24日
    浏览(49)
  • Linux上使用vcpkg + CMake配置cpprest

    vcpkg的使用在Linux平台与Windows平台没什么差异,就不过多阐述。 有一点需要注意的是,Windows上安装的包默认是x86,而Linux上默认是x64。 cpprest库依赖很多库,比如boost,openssl等,但不用操心,vcpkg会帮我们自带安装。 需要注意的是,安装过程很有可能会失败,除网络原因外,

    2024年02月06日
    浏览(27)
  • cmake/vcpkg x64-windows colmap安装/编译

            colmap是增量式sfm开源软件。相比于之前的sfm工作,colmap在选择最优初始图,选择最优更新图,三角化,BA,和迭代方面都有策略上的更新。本博文介绍其安装/编译方法。博主是先安装跑了下功能,再编译以阅读源码。         安装的软件是封装好的,无法看到源代码

    2024年02月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包