1

opencv笔记:ubuntu安装opencv以及多版本共存

 2 years ago
source link: https://gsy00517.github.io/opencv20200226092314/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
opencv笔记:ubuntu安装opencv以及多版本共存 | 高深远的博客

opencv笔记:ubuntu安装opencv以及多版本共存

发表于 2020-02-26 | 更新于: 2020-02-26 | 分类于 环境配置 | 0 | 阅读次数:
字数统计: 1.4k字 | 阅读时长 ≈ 5分钟

跑CV程序少不了opencv,然后最近实践的时候发现opencv似乎不是向后兼容的(opencv4.0跑不了opencv2.4的),于是还是记录一下,后期改也方便。

References

电子文献:
https://blog.csdn.net/new_delete_/article/details/84797041?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
https://www.jianshu.com/p/f646448da265
https://blog.csdn.net/learning_tortosie/article/details/80594399


本节以opencv4.0为例,记录一下在ubuntu18.04上安装的流程。此方法经检验,同样适用于opencv2.4。

cmake

首先要确保系统已经安装了cmake,没有的话请sudo apt-get install cmake或者源码编译最新版。

sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev

支持python

#python3支持
sudo apt install python3-dev python3-numpy

#streamer支持
sudo apt install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev

#可选的依赖
sudo apt install libpng-dev libopenexr-dev libtiff-dev libwebp-dev

下载源文件

可以到官网或者github上去下载源文件(官网版本选择在下方翻页,github上通过tag选择)。
推荐使用github下载,相对会快一些。

解压源文件并进入。

unzip opencv-4.0.0.zip
cd opencv-4.0.0/

创建编译文件夹并进入。

mkdir build
cd build/

cmake

opencv最好装在/usr/local目录下,为了后期方便,我将不同版本的opencv再独立键一级目录。

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

这里我修改了安装路径为/usr/local/opencv4,可以自己修改到需要的位置,如果该命令中不加-D CMAKE_INSTALL_PREFIX=/usr/local/opencv4来指定安装目录,则默认各部分分别安装在/usr/local/目录的includebinlib3个文件夹下。

注意:
别忘了最后的..。(cmake .是运行cmake,cmake ..会生成Makefile、CMakeFiles等一些文件)
由于opencv4.0以上版本默认不使用pkg-config,因此需要通过-D OPENCV_GENERATE_PKGCONFIG=YES开启生成opencv4.pc文件(后面要用),支持pkg-config功能。如果是安装opencv4.0以下的软件,也加上这句是不会有影响的。
这个命令执行需要一段时间,期间会输出百分比,无需担心。

make编译

make -j6

这里-j6表示开6个线程去编译,-j2-j4或者不加其实任意。

make安装

sudo make install

以上就完成了安装,下面来配置环境。

pkg-config环境

我们可以通过sudo find / -iname opencv4.pc来找到opencv4.pc文件,这里会出现一个Permission denied的报错,但是没关系,路径还是会输出。如果按照之前的方法安装,那么应该是会输出/usr/local/opencv4/lib/pkgconfig/opencv4.pc。因此我们接下来就要把路径/usr/local/opencv4/lib/pkgconfig/加入到PKG_CONFIG_PATH
可以用vim来方便地编辑。编辑方法我在anaconda笔记:解决conda无法下载pytorch的问题一文中已经提过,只需掌握insert模式和normal模式即可正确地操作vim。

sudo vim /etc/profile.d/pkgconfig.sh

在文件中加入下面一行:

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

:wq保存退出之后,在终端中使用命令激活。

source /etc/profile

最后我们可以通过pkg-config --libs opencv4(opencv2.4使用pkg-config --libs opencv)来验证配置是否成功,如果能输出一系列对应的库,说明配置成功。

动态库环境

为了在程序执行时能加载动态库*.so的路径,我们还需配置动态库环境。

sudo vim /etc/ld.so.conf.d/opencv4.conf

在该文件(可能是空文件,也可能是/usr/local/lib),加上或者改成自己lib的安装路径,如果是按照上面的流程安装的,那应该是改成/usr/local/opencv4/lib
最后还要用命令使得配置生效。

sudo ldconfig

python-opencv环境

找到编译好的python cv库:

sudo find / -iname cv2*.so

这里会看到cv2.cpython-35m-x86_64-linux-gnu.so也就是就是编译好的python3的opencv库,我们把它复制到对应python解释器的/path/to/dist-packages(系统自带的python解释器)和/path/to/site-packages(用户安装的python解释器)目录下,之后就能在该python解释器中使用python-opencv库。
连接到系统自带的python3解释器中:

sudo ln -s /usr/local/opencv4/lib/python3.5/dist-packages/cv2/python-3.5/cv2.cpython-35m-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/cv2.so

连接到Anaconda创建的虚拟环境python3解释器中:

sudo ln -s /usr/local/opencv4/lib/python3.5/dist-packages/cv2/python-3.5/cv2.cpython-35m-x86_64-linux-gnu.so ~/anaconda3/lib/python3.7/site-packages/cv2.so

这里的ln -s是建立软连接,想进一步了解可以看看ubuntu笔记:安装typora

找到之前解压的源文件,在源文件/samples/cpp/example_cmake目录下(也可能是在源文件/samples/c/example_cmake目录下),我们可以通过官方提供的example来检验。
依次执行:

cmake .
make
./opencv_example

可以看到电脑打开了摄像头拍你自己,在左上角有一个Hello OpenCV,即表示配置成功。


多版本共存

上面已经安装了opencv4.0,下面以opencv2.4为例,介绍一下如何从opencv4.0切换到opencv2.4。
打开~/.bashrc

gedit ~/.bashrc

这里用gedit来打开,用vim也一样。
在文件末尾增加如下内容(我将opencv2.4安装在/usr/local/opencv2_4目录下):

export PKG_CONFIG_PATH=/usr/local/opencv2_4/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv2_4/lib

更新~/.bashrc

source ~/.bashrc

此时再通过pkg-config --modversion opencv查询opencv的版本,如输出修改后我们想要的版本,则表示切换成功。

注:如果想换回来,用同样的方法把之前加的两条增加的内容注释掉即可,注意别忘了source ~/.bashrc更新!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK