如何在 18.10 上安装 opencv4.0?

如何在 18.10 上安装 opencv4.0?

几周以来,我一直在尝试在 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

答案1

根据这个问题,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

答案2

概括:

此方法手动下载、提取、编译和安装最新的 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 4.0.1OpenCV 版本和 opencv 4.0.1 测试数据opencv_extra-master.zip

  4. 提取 OpenCV 4.0.1 zip 包

    现在你已经下载了适合你系统的正确归档包到~/下载文件夹中,运行以下命令来提取 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 的到来导致“symlink latest”与版本 4.0.1 断开。

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

      $ sudo ln -s opencv-5.0.1 latest
      

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

    • 同时,您仍可以保留旧版本而不删除它们。出于某些原因,您想使用旧版本,只需切换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 的测试套件

    在开始测试用例之前,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失败?

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

    该测试用例失败,因为没有输入图像,因此拍摄任意.jpg.png图片并将这两张图片重命名为和lena.jpglena.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

    在此处输入图片描述

答案3

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

sudo make install

这也许能解决你的问题。

答案4

我通过运行sudo find / -name "opencv4.pc" 2>/dev/null位于/usr/lib/x86_64-linux-gnu/pkgconfig/opencv4.pc

相关内容