【OpenCV 】Ubuntu系统下配置安装OpenCV开发环境

1 篇文章 0 订阅

开发环境

  • 物理主机:Win 10 64位
  • 虚拟工具:VMware Workstation 15 Pro
  • 虚拟系统:Ubuntu 20.04.4 LTS
  • 软件版本: OpenCV 4.6.0

一、前提准备

首先,需要安装一系列必要的工具,包括:

$ sudo apt-get update                                      # 这是为了更新你的软件源
$ sudo apt-get install build-essential                     # 这是为了安装编译所需的库
$ sudo apt-get install cmake pkg-config git                # 这是为了安装一些必要的工具
$ sudo apt-get install libgtk2.0-dev libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libtiff4.dev libswscale-dev libjasper-dev libdc1394-22-dev libgstreamer1.0-dev  libgstreamer-plugins-base1.0-dev

然后,可以去网上下载OpenCV的源码,我是采取git仓库克隆的方式,直接获取最新的版本,如下:

$ git clone https://github.com/opencv/opencv

二、编译安装

1、建立编译目录

源码下载完成后,进入该目录下,执行以下语句:

$ cd opencv
$ mkdir build
$ cd build

这是为了在源码的根目录下建立一个临时目录,用于存放编译所产生的文件,不至于污染源码,使得你的源码可以根据不同的配置命令分别编译出多份可执行文件,每一份都很清晰,不至于混在一起。

这个思路,有一个很官方的名字叫OUT SOURCE BUILD,意思就是在代码之外的地方进行编译。而与其相对的,就是IN-SOURCE BUILD,意味在代码内进行编译。

所以,如果没有按照上面的步骤新建一个目录然后到目录里面去编译的话,系统就会给出一个提示说:In-source builds are not allowed.

2、编译安装源码

$ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
$ make
$ sudo make install

注意:在第一步中,配置了两个参数,第一个参数是指定程序为发布版本第二个参数是指定安装目录,也可以根据自己的需要自定义修改(不过强烈建议大家不要改,就按这个/usr/local目录,不然后面可能会遇到一些麻烦)。

在这里插入图片描述

三、配置环境

1、添加库路径

打开文件进行编辑:

$ sudo vi /etc/ld.so.conf.d/opencv.conf

输入下面的内容,然后保存并退出

/usr/local/lib

2、添加环境变量

打开文件进行编辑:

$ sudo vi /etc/profile

在末尾加入:

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

3、更新环境变量

$ sudo source /etc/profile

4、重启,然后输入命令

$ pkg-config --modversion opencv           # 查看linux下的opencv安装版本
4.6.0

在这里插入图片描述

如果没有出错,说明安装成功。

注意:如果报了如下错误 Package opencv was not found in the pkg-config search path

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

那就是缺失了opencv.pc这个配置信息文件,故解决方法就是添加这个文件然后将其导入到环境变量中,具体操作如下:

1、首先创建opencv.pc文件(需要注意它的路径信息)

$ cd /usr/local/lib
$ sudo mkdir pkgconfig
$ cd pkgconfig
$ sudo touch opencv.pc

2、然后在opencv.pc中添加以下信息(注意这些信息需要与自己安装opencv时的库路径对应)

prefix=/usr/local
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib

Name: opencv
Description: The opencv library
Version:4.6.0
Cflags: -I${includedir}/opencv4
Libs: -L${libdir} -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann  -lopencv_core
~                                               

3、保存退出,然后将文件导入到环境变量

export  PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

至此就配置好opencv.pc,再执行 pkg-config --modversion opencv命令试试。

四、测试效果

完成了上述的所有步骤,就已经差不多了,接下来就开始进行验证测试。

进入opencv的源码目录,里面有一个sample/cpp/example_cmake的子目录,里面有一个很简单的例程,我们就用这个例程来进行演示:

$ cd opencv/samples/cpp/example_cmake/
$ cmake .           # 请注意,这里的cmake后有一个空格,然后是一个点号
$ make

编译成功了,运行一下试试:

$ ./opencv_example 
Built with OpenCV 4.6.0-dev

(opencv_example:13315): GStreamer-CRITICAL **: gst_element_get_state: assertion 'GST_IS_ELEMENT (element)' failed
VIDEOIO ERROR: V4L: can't open camera by index 0
No capture

这是因为用的是虚拟机,没有摄像头,因此显示了黑屏。如果使用的是物理机,也有摄像头,那么就会显示出摄像头的画面并叠加上hello opencv的提示语句。

到此,所有工作全部顺利完成!恭喜!

五、问题解决

如果刚才配置编译和安装目录的时候,没有设置为缺省的/usr/local目录, 而是设置了其他的目录(比如/usr/local/opencv-4.6.0这个目录),则有可能会在后面在应用的过程中遇到一个问题,就是使用cmake命令编译某个工程项目时,提示说:

CMake Error at CMakeLists.txt:39 (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.

  Could not find a package configuration file provided by "OpenCV" with any
  of the following names:

    OpenCVConfig.cmake
    opencv-config.cmake

  Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set
  "OpenCV_DIR" to a directory containing one of the above files.  If "OpenCV"
  provides a separate development package or SDK, be sure it has been
  installed.

原因就是因为安装opencv时没有使用的默认的路径,导致cmake找不到opencv。

解决方法也很简单,执行cmake命令前,先输入下面的语句:

$ export OpenCV_DIR=/usr/local/opencv-4.6.0			# 这里的/usr/local/opencv-4.0.0目录就是你安装的实际目录

然后再执行cmake命令,按照之前的步骤一步步往下。

  • 16
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cappuccino-jay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值