跑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
或者源码编译最新版。
依赖库
1 | sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev |
支持python
1 | #python3支持 |
下载源文件
可以到官网或者github上去下载源文件(官网版本选择在下方翻页,github上通过tag选择)。
推荐使用github下载,相对会快一些。
安装
解压源文件并进入。
1 | unzip opencv-4.0.0.zip |
创建编译文件夹并进入。
1 | mkdir build |
cmake
opencv最好装在/usr/local
目录下,为了后期方便,我将不同版本的opencv再独立键一级目录。
1 | 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/
目录的include
,bin
,lib
3个文件夹下。
注意:
别忘了最后的..
。(cmake .
是运行cmake,cmake ..
会生成Makefile、CMakeFiles等一些文件)
由于opencv4.0以上版本默认不使用pkg-config,因此需要通过-D OPENCV_GENERATE_PKGCONFIG=YES
开启生成opencv4.pc
文件(后面要用),支持pkg-config功能。如果是安装opencv4.0以下的软件,也加上这句是不会有影响的。
这个命令执行需要一段时间,期间会输出百分比,无需担心。
make编译
1 | make -j6 |
这里-j6
表示开6个线程去编译,-j2
、-j4
或者不加其实任意。
make安装
1 | 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。
1 | sudo vim /etc/profile.d/pkgconfig.sh |
在文件中加入下面一行:
1 | export PKG_CONFIG_PATH=/usr/local/opencv4/lib/pkgconfig:$PKG_CONFIG_PATH |
:wq
保存退出之后,在终端中使用命令激活。
1 | source /etc/profile |
最后我们可以通过pkg-config --libs opencv4
(opencv2.4使用pkg-config --libs opencv
)来验证配置是否成功,如果能输出一系列对应的库,说明配置成功。
动态库环境
为了在程序执行时能加载动态库*.so
的路径,我们还需配置动态库环境。
1 | sudo vim /etc/ld.so.conf.d/opencv4.conf |
在该文件(可能是空文件,也可能是/usr/local/lib
),加上或者改成自己lib的安装路径,如果是按照上面的流程安装的,那应该是改成/usr/local/opencv4/lib
。
最后还要用命令使得配置生效。
1 | sudo ldconfig |
python-opencv环境
找到编译好的python cv库:
1 | 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解释器中:
1 | 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解释器中:
1 | 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来检验。
依次执行:
1 | cmake . |
可以看到电脑打开了摄像头拍你自己,在左上角有一个Hello OpenCV,即表示配置成功。
多版本共存
上面已经安装了opencv4.0,下面以opencv2.4为例,介绍一下如何从opencv4.0切换到opencv2.4。
打开~/.bashrc
:
1 | gedit ~/.bashrc |
这里用gedit来打开,用vim也一样。
在文件末尾增加如下内容(我将opencv2.4安装在/usr/local/opencv2_4
目录下):
1 | export PKG_CONFIG_PATH=/usr/local/opencv2_4/lib/pkgconfig |
更新~/.bashrc
:
1 | source ~/.bashrc |
此时再通过pkg-config --modversion opencv
查询opencv的版本,如输出修改后我们想要的版本,则表示切换成功。
注:如果想换回来,用同样的方法把之前加的两条增加的内容注释掉即可,注意别忘了
source ~/.bashrc
更新!