Linux下安装OpenCV

总结网上的方案,结合自己的安装经历,受惠于网络,回馈于网络,写下这篇博文,希望对大家有帮助~

首先声明下,安装和写这篇博文过程中,看了很多相关的文章,自己都记不清了,所以本文参考的内容这里就不一一列出了,哈哈~

1 安装cmake

         这个在ubuntu下一句命令搞定,

$ apt-get install cmake

这样子安装的cmake是没有cmake-gui的,但使用命令来cmake也十分简单。(apt-get下载的文件存放在/var/cache/apt/archives目录下)。

         通过以下命令查看cmake安装是否成功

$ cmake-version

成功的话会返回版本号。

 

2 安装相关的包

$ apt-get install libgtk2.0-dev

$ apt-get install pkg-config

12.04版本下只需要装这两个包,其中后一个包在我的电脑上可能是已经更新过了,所以实际上不用装。不管怎么样,都运行一下这两条命令。

 

3 安装opencv

我用的版本是2.4.3,但2.0之后的版本安装应该都差不多。包下载地址:

http://www.opencv.org.cn/index.php/Download。下载过来的包名称是OpenCV-2.4.3.tar.bz2。我把这个包放到/home/pxf/temp下,解压,

$ tar jxvf OpenCV-2.4.3.tar.bz2

得到文件夹OpenCV-2.4.3。进入该文件夹,

$ cd OpenCV-2.4.3

$ mkdir build

$ cd build

新建的build文件夹作为cmake编译后的opencv文件输出目录。

接下来进行cmake,

$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/home/pxf/study/OpenCV -D BUILD_PYTHON_SUPPORT=ON ..

这里,把编译选项选为RELEASE;把OpenCV安装路径设为/home/pxf/study/OpenCV下(安装后该文件夹含有4个文件夹bin、include、lib、share)。比较好的做法是把它安装到/usr/local、/usr/lib、/lib下,尤其推荐第一个,因为一般来说开源的软件都会安装到该目录下。我的安装目录后来给我造成了不少麻烦,后面再谈。

         cmake运行成功后,会在build目录下生成makefile,我们运行就可以了,它会把OpenCV安装到我们cmake设定的路径下,

$ make

$ make install

前一条命令比较耗时。

 

4 系统环境变量配置

接下来非常重要的一步,是对系统相关环境变量进行配置,如果不做好配置,那么不仅5中的编译不能通过,即使编译出可执行文件了该文件也运行不起来(因为找不到共享库*.so文件)。

首先要做的是,将/home/pxf/study/OpenCV/lib/pkg-config(这是我的安装路径,要看自己的安装路径)中的opencv.pc拷贝到/usr/lib/pkg-config中,如果不做这步,根本编译不起!这个文件包含着关于OpenCV共享库(.so)的很多使用信息(例如,库文件路径、名称及头文件信息),对编译非常重要。另一种方案是更改环境变量让系统找得到opencv.pc文件,做法如下,

$ sudo gedit /etc/bash.bashrc

在该文件的末尾添加以下内容,

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/pxf/study/OpenCV/lib/pkg-config

export PKG_CONFIG_PATH

(这里两种方法,前一种方法是我试过的,后一种没试过但应该可行)

做了这一步后,编译没问题了,但是如果你没做以下步骤,编译出来的可执行文件是运行不了的。这是因为,/usr/lib/pkg-config只跟编译有关,不做下面的步骤可执行文件运行时还是找不到共享库在哪里。OpenCV的共享库文件在安装路径的lib文件夹下。

配置的方法和cmake时设定的安装路径有关,确切地说,是和安装后的共享库的位置相关,主要分以下三种:

(4.1)  如果共享库文件安装到了/lib或/usr/lib目录下, 那么只需执行一下ldconfig命令。ldconfig命令的用途主要是,在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件夹/etc/ld.so.conf内所列文件下,搜索出可共享的动态链接库,进而创建出动态装入程序(ld.so)所需的连接和缓存文件。

(4.2)  如果共享库文件安装到了/usr/local、/home/pxf/study/OpenCV等非”/lib”或/usr/lib"目录,那么在执行ldconfig命令前,还要把新共享库目录加入到共享库配置文件/etc/ld.so.conf中,

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

这样创建了opencv.conf,然后在该文件中添加/home/pxf/study/OpenCV/lib,保存,退出,然后配置库,

$ sudo ldconfig

(4.3)  第二种情况下,如果不想在/etc/ld.so.conf中加文件加路径(或者是没有权限加路径),那可以export一个全局变量LD_LIBRARY_PATH,然后运行可执行程序就会成功,因为这时系统会根据这个临时全局变量,去这个目录中找共享库。

$ export LD_LIBRARY_PATH=/home/pxf/study/OpenCV/lib

这是种临时的解决方法,一旦重新运行一个终端,就需要再次运行这个命令才能让系统找得到共享库。

(这里就是我吃苦头的地方,经过试验2、3两种方法可以解决我的安装路径的问题,其中2可以一次性解决,3在每次重启终端时都要在运行一次export命令才行。)

 

5 测试

         到这里opencv基本安装完成,接下来测试一下,提供两种我试过的测试方案:

5.1. 进入下载过来解压后的文件,编译里面的sample代码,成功后运行看效果,

$ cd OpenCV2.4.3/samples/c

$ g++ `pkg-config --cflags opencv` -o morphology morphology.c `pkg-config --libsopencv`

$ ./morphology

5.2. 编译所有sample代码,运行其中之一(./morphology也在其中),下面举一个其他的例子来运行,这是个人脸检测的代码,

$ cd OpenCV2.4.3/samples/c

$ ./build_all.sh

$ ./facedetect --cascade="/home/pxf/study/OpenCV/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 lena.jpg

最后一条命令中的路径就是OpenCV安装后4个文件的其中之一share,里面包含了一些安装包提供的训练数据等等。

 

### 安装OpenCV库于Linux操作系统 #### 使用包管理器安装 对于希望快速设置环境的用户而言,在Linux上通过包管理工具来安装OpenCV是一种简便的方式。例如,在基于Debian或Ubuntu系统的环境中,可以利用`apt-get`命令完成这一操作[^1]。 ```bash sudo apt update sudo apt install python3-opencv ``` 上述指令会自动下载并安装Python 3版本下的OpenCV绑定以及其依赖项。 #### 编译源码安装 另一种更为灵活但也相对复杂的方案是从官方获取最新版源代码自行编译。此过程允许自定义构建选项,适合有特殊需求的应用场景。具体步骤涉及准备开发环境、克隆Git仓库、配置CMake参数等一系列动作[^4]。 首先确保已安装必要的软件包: ```bash sudo apt-get install build-essential cmake git pkg-config libgtk-3-dev \ libavcodec-dev libavformat-dev libswscale-dev python3-dev python3-numpy \ libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev ``` 接着从GitHub拉取项目文件,并按照指引执行相应脚本进行本地化调整与编译工作。 #### Python环境下集成OpenCV 当目标是在Python程序里调用OpenCV功能时,除了基本的OpenCV安装外,还需确认Python解释器能够识别该库。这可能涉及到额外安装pip工具及其管理的相关扩展包,如`cv2`接口模块等[^3]。 ```bash pip3 install opencv-python ``` 以上两种途径均可实现Linux平台上的OpenCV部署,选择哪种取决于个人偏好和技术要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值