AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1127973
Accepted
j0h
j0h
Asked: 2019-03-23 16:38:59 +0800 CST2019-03-23 16:38:59 +0800 CST 2019-03-23 16:38:59 +0800 CST

如何在 18.10 上安装 opencv4.0?

  • 772

几个星期以来,我一直在尝试在 ubuntu 上安装 opencv4.0.1。我已经按照opencv 安装说明进行操作 ,我可以制作和编译库,但是安装后,pkgconfig 仍然找不到库,当我尝试构建程序时,我得到了诸如缺少库错误之类的东西。

$ pkg-config --cflags opencv
Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found
software-installation compiling opencv
  • 3 3 个回答
  • 8832 Views

3 个回答

  • Voted
  1. Best Answer
    gsxruk
    2019-03-24T04:00:56+08:002019-03-24T04:00:56+08:00

    根据这个问题,OpenCV 放弃了对 pkg-config 的支持。但是,可以按如下方式添加:

    配置

    运行时cmake添加附加参数,-D OPENCV_GENERATE_PKGCONFIG=YES例如

    cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/usr/local ..
    

    然后make和sudo make install以前一样。

    测试

    使用名称opencv4而不仅仅是opencv例如

    pkg-config --cflags opencv4
    
    • 5
  2. Marmayogi
    2019-03-25T02:25:04+08:002019-03-25T02:25:04+08:00

    概括:

    此方法手动下载、提取、编译和安装最新的 OpenCV 4.0.1。还提供了一个工作示例代码main.cpp,以证明成功安装 OpenCV。

    什么是 OpenCV?

    OpenCV 是由英特尔创建的图像处理库,后来由 Willow Garage 提供支持,现在由 Itseez, Inc. 维护。OpenCV 是指英特尔® 开源计算机视觉库。它是 C 函数和一些 C++ 类的集合,它们实现了一些流行的图像处理和计算机视觉算法。OpenCV 在 Mac、Windows、Linux(终端环境)上可用。

    按照以下步骤安装 OpenCV:

    1. 更新 Ubuntu 18.04。

      发出以下命令:

      $ sudo apt-get update
      $ sudo apt-get upgrade
      
    2. 安装依赖项。

      发出以下命令:

      $ sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config\
      libavcodec-dev libavformat-dev libswscale-dev python3.7 python3.7-dev python-numpy\
      python-scipy python-matplotlib ipython python-pandas python-sympy python-nose\
      libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libjasper-dev\
      libdc1394-22-dev libeigen3-dev libtheora-dev libvorbis-dev libxvidcore-dev\
      libx264-dev sphinx-common libtbb-dev yasm libfaac-dev libopencore-amrnb-dev\
      libopencore-amrwb-dev libopenexr-dev libgstreamer-plugins-base1.0-dev libavutil-dev\
      libavfilter-dev libavresample-dev
      
    3. 获取 OpenCV:从OpenCV Releases和 opencv 4.0.1 testdata opencv_extra-master.zip下载 opencv 4.0.1 。

    4. OpenCV 4.0.1 zip包的解压

      现在您已经为您的系统下载了正确的存档包到~/Downloads文件夹中,运行以下命令来提取 OpenCV。

      $ sudo mkdir /opt/opencv
      

      要将 zip 文件解压缩opencv-4.0.1.zip到/opt/opencv文件夹中,请运行以下命令:

      $ sudo unzip ~/Downloads/opencv-4.0.1.zip -d /opt/opencv
      

      现在提取opencv_extra-master.zip一个大小为 490.3 MB 的大文件,其中包含测试所需的测试套件opencv 4.0.1。运行以下命令完成提取:

      $ sudo unzip ~/Downloads/opencv_extra-master.zip -d /opt/opencv/opencv-4.0.1
      
    5. symlink latest指向当前版本 opencv-4.0.1 的设置

      发出以下命令来创建symlink:

      $ cd /opt/opencv
      $ sudo ln -s opencv-4.0.1 latest
      

      在此处输入图像描述

      为什么你需要最新的符号链接?

      • Symlink latest始终跟踪 OpenCV 安装的当前版本。
      • 明天,让我们说,一个新版本 5.0.1 到了,然后安装那个版本。现在您通过发出以下命令删除symlink latest指向旧版本 4.0.1:

        $ sudo unlink /opt/opencv/latest
        

        'Symlink latest' 指向当前版本 opencv-4.0.1,但最新版本 5.0.1 的到来导致版本 4.0.1 中的 'symlink latest' 严重。

      • 现在symlink latest使用以下命令创建指向较新版本的 5.0.1:

        $ sudo ln -s opencv-5.0.1 latest
        

        现在'symlink latest'指向更新版本的opencv-5.0.1。请注意,没有名为 5.0.1 的版本,这只是一个“虚构”版本,用于展示“最新符号链接”的强大功能。

      • 同时,您仍可以保留旧版本而不删除它们。由于某些原因,您想使用旧版本,您只需切换symlink latest指向旧版本即可!您不必更改任何其他设置。

      • 在随后的第 8 步中,您将设置PATH, LD_LIBRARY_PATH, PKG_CONFIG_PATH, and OPENCV_TEST_DATA_PATH 环境变量。所有这些环境变量的值都涉及symlink latest,因此即使稍后您切换到较新的版本,这些设置也始终保持不变!

    6. 安装OpenCV 4.0.1zip包

      创建一个临时构建目录release,我们将其记为<cmake_build_dir>,您要在其中放置生成的 Makefile、项目文件以及目标文件和输出二进制文件并输入。

      $ cd /opt/opencv/latest
      $ sudo mkdir release
      

      要构建和安装 OpenCV,请发出以下命令:

      $ cd /opt/opencv/latest/release
      $ sudo cmake -DCMAKE_BUILD_TYPE=Release -DOPENCV_GENERATE_PKGCONFIG=YES -DCMAKE_INSTALL_PREFIX=/opt/opencv/opencv-4.0.1  /opt/opencv/opencv-4.0.1
      

      笔记:

      • 运行 cmake 时添加此标志:-D OPENCV_GENERATE_PKGCONFIG=YES
      • 将为它生成.pc文件pkg-config并安装它。
      • 如果不在cmake使用OpenCV.

      从构建目录release执行make,建议在多个线程中执行此操作:

      $ cd /opt/opencv/latest/release
      $ sudo make -j4                             # runs 4 jobs in parallel
      $ sudo make install
      

      要更新links/cache动态加载器使用的:

      $ sudo ldconfig
      
    7. 在本地为 opencv-4.0.1 运行 testsuite

      在开始测试用例之前,OPENCV_TEST_DATA_PATH必须设置环境变量。

      $ export OPENCV_TEST_DATA_PATH=/opt/opencv/latest/opencv_extra-master/testdata
      

      发出以下命令以开始所有测试用例:

      $ cd /opt/opencv/latest/release 
      $ sudo ./bin/opencv_test_core
      

      测试用例 Core_globbing.accuracy 失败

      为什么测试用例Core_globbing.accuracy失败了?

      我们刚刚构建了我们的 OpenCV 源代码,并尝试通过"./bin/opencv_test_core"从"/opt/opencv/latest/release"文件夹运行来测试编译。

      该测试用例失败,因为没有输入图像,因此拍摄任何.jpg和.png图片并将这两张图片重命名为lena.jpg和lena.png并将它们复制到"/opt/opencv/latest/release/bin"文件夹中并再次重新运行所有测试用例。

      发出以下命令以再次重新运行所有测试用例:

      $ cd /opt/opencv/latest/release 
      $ sudo ./bin/opencv_test_core
      

      测试用例通过

    8. 设置 PATH 环境变量

      OpenCV需要设置PATH环境变量,如下图所示。

      opencv.sh在目录下创建一个名为的文件/etc/profile.d/。

      $ sudo touch /etc/profile.d/opencv.sh
      $ sudo vi /etc/profile.d/opencv.sh
      

      添加以下内容:

      #!/bin/sh
      export PATH=/opt/opencv/latest/bin:/opt/opencv/latest/release/bin:${PATH}
      export LD_LIBRARY_PATH=/opt/opencv/latest/release/lib:$LD_LIBRARY_PATH
      export PKG_CONFIG_PATH=/opt/opencv/latest/lib/pkgconfig
      export OPENCV_TEST_DATA_PATH=/opt/opencv/latest/opencv_extra-master/testdata
      

      保存并关闭文件。使用以下命令使其可执行。

      $ sudo chmod +x /etc/profile.d/opencv.sh
      

      然后,通过运行以下命令永久设置环境变量:

      $ source /etc/profile.d/opencv.sh
      

      注销或重新启动系统。

      现在,检查PATH环境变量:

      $ echo $PATH
      

      PATH环境变量应该有/opt/opencv/latest/bin目录和/opt/opencv/latest/release/bin目录。

    9. opencv4.pc 在哪里?

      发出以下命令来定位opencv4.pc:

      $ sudo find /opt -name opencv4.pc
      

      opencv4.pc 将在/opt/opencv/latest/lib/pkgconfig目录中可用。

      现在,使用命令检查 python3.7 版本:

      $ python3.7 version
      

      opencv_version二进制文件在哪里?

      现在,检查opencv_version使用以下命令的位置:

      $ sudo updatedb                                      #  rebuild library cache
      $ locate opencv_version | grep bin/opecv_version
      

      opencv_version 将位于/opt/opencv/latest/release/bin目录中。

      现在,检查opencv_version使用命令:

      $ opencv_version
      

      现在检查是否OpenCV安装在机器上,运行以下命令:

      $ pkg-config --modversion opencv4
      

      在此处输入图像描述

    10. 样品测试:

      • 创建文件夹~/code目录。
      • 将以下程序另存为main.cpp
      • 进入目录main.cpp_~/code
      • 在目录中添加一个sample.jpg小于 1 MB 的大小~/code进行测试。

      发出以下命令:

      $ cd ~/code
      $ ls
      

      示例代码:

      #include <opencv2/highgui.hpp>
      #include <iostream>
      
      int main( int argc, char** argv ) {
      
        cv::Mat image;
        image = cv::imread("sample.jpg" , cv::IMREAD_COLOR);
      
        if (! image.data ) {
            std::cout <<  "Could not open or find the image :";
            std::cout <<  "sample.jpg" << std::endl ;
            return -1;
        }
      
        cv::namedWindow( "Display window", cv::WINDOW_AUTOSIZE );
        cv::imshow( "Display window", image );
      
        cv::waitKey(0);
        return 0;
      }
      

      编译main.cpp

      $ cd ~/code
      $ g++ main.cpp -o output `pkg-config --cflags --libs opencv4`
      

      运行./output如下:

      $ ./output
      

      示例程序的输出main.cpp:

      在此处输入图像描述

    • 4
  3. LizardMaster
    2019-03-23T17:38:55+08:002019-03-23T17:38:55+08:00

    构建库后,您需要安装它以便在不指定构建目录的情况下找到它。

    sudo make install
    

    这可能会解决您的问题。

    • 0

相关问题

  • 如何在没有 root 访问权限的情况下安装软件包?

  • 设置 LAMP 堆栈的最简单方法是什么?

  • 我应该在哪里安装 sagemath?

  • How do I install Adobe Flash player?对于 11.10 及更高版本明确修复 11.10 上的 64 位 Flash

  • 如何设置软件中心为非 root 用户安装软件?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve