Ubuntu下安装多版本Opencv
前言
网上随便一搜就出来好多opencv的安装,有一些已经过于古老,有一些试了之后出现各种各样的问题,本文是搜了几个版本的Opencv安装之后总结得来,希望对后来搜索的童鞋有所帮助。
Opencv的安装
我是先在opencv的官网直接下载了多个版本的,推荐大家直接下载每个版本比较新的一个,比如2.x.x最新的可以到2.4.13.6,越老的安装时候越容易出问题~
- 更新
sudo apt-get update
- 安装cmake
sudo apt-get install cmake
- 安装各种依赖(不一定全,系统差异比较大,如果出了问题可以再搜问题,补充安装)
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config
- 首先需要解压下载的安装包,一般直接双击解压即可,放的位置没有固定要求,但是后面会用到这个路径,也不要放的太随意。
- 接下来要在解压之后的文件夹中新建一个文件夹,专门用于存放编译好的文件,这里新建了一个release文件夹。
//新建文件夹
mkdir release
//切换到release目录下
cd release/
- 一般都是使用Cmake进行编译,需要先对编译进行配置,其中好多教程里没有-D OPENCV_GENERATE_PKGCONFIG=ON这段,就导致后面会出现要自己去新建这个pc文件的问题,这里加上,就会自动生成这个文件,后面省了很多事。
//编译配置,第一个命令是编译文件存放目录,第二个是自动生成opencv.pc文件,第三个是安装opencv的目录
//一般可以设置在usr目录下,起名字随意,local2.4.13.6也可以,不过路径后面要用到。
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local*.*.* ..
//开始编译,-j6表示用cpu的6个核编译,这步非常慢,如果有多核一定用上,会快很多,性能不好的编4、5个小时很正常。
sudo make -j6
//可以安装了
sudo make install
//顺便加一行,如果要卸载也是要切到这个目录下面,然后执行uninstall
//sudo make uninstall
- 安装多版本,都是同样的方法,记得要安装在不同的文件夹下。
Opencv多版本的切换
- 如果安装了多个版本的Opencv,在安装完之后,需要在安装包(就是最开始解压之后那个)里的CMakelists.txt文件里加一行
//应该没有位置要求,我是在开头随便找了一行插进去的
set(OpenCV_DIR "/media/pi/userdata1/root/home/pi/Documents/open/opencv-*.*.*/release")
- 从这一步开始,每次切换Opencv版本的时候都要重新做一遍,要不然容易出问题。
- 先要配置opencv.conf文件
//切换到ld.so.conf.d文件夹下
cd /etc/ld.so.conf.d/
//编辑opencv.conf文件,没有的话会自动创建
sudo vim opencv.conf
//直接在里面添加下面这行,其实就是opencv的安装目录,里面的*.*.*和上面的版本号的*是一样的
//需要换成你自己设置的目录名比如/user/local2.4.13/lib
/user/local*.*.*/lib
//刷新一下
sudo ldconfig
- 配置环境变量
//先编辑.bashrc文件
sudo vim /etc/bash.bashrc
//在末尾添加下面两行,其中的*.*.*里的*还是和上面一样,是安装目录的版本号,要根据你自己设置的目录名修改。
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local*.*.*/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local*.*.*/lib
//也需要执行一下
source /etc/bash.bashrc
//执行一下下面这个,如果返回版本号说明切换成功了~
//注意一下opencv后面的***,如果是opencv4以上的话,生成的pc文件名字会是opencv4.pc,其他版本应该都直接是opencv.pc
pkg-config opencv*** --modversion
//PS:
//bash.bashrc这个文件每次打开终端都会刷新,如果只需要短暂切换也可以不修改这个文件,直接用
export PKG_CONFIG_PATH=/usr/local*.*.*/lib/pkgconfig //也可以让环境变量临时变成需要使用的opencv版本
写个小程序测试一下吧
//编译程序,其中test.cpp是文件名,尽量放在前面,有人说放后面可能会出现报错。
//注意一下这里的***还是pc文件的名字,opencv4以上的还是opencv4.pc,其他版本应该没有4,这个很容易就又报错。
sudo g++ test.cpp -o test `pkg-config --cflags opencv***` `pkg-config --libs opencv***`
//run一下试试
sudo ./test
程序也是从别的地方摘的,兼容性还可以,opencv2、3、4应该都可以跑,显示一个美女图片
#include "opencv2/highgui.hpp"
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat srcImage = imread("lena.jpg");
imshow("lena",srcImage);
waitKey(0);
return 0;
}
附一下原图:
版权声明:本文为jinx09原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。