Linux下的opencv安装

来源:互联网 发布:php可以做后端吗 编辑:程序博客网 时间:2024/04/30 09:49

一个类库的安装总是一件很恼人的事情,如果对于整个过程中的各个步骤的意义不是了然于胸的话。掰开来讲无非也就是三步:

1.下载编译源代码,使得磁盘中存在所需要的头文件和库文件

2.添加PATH,使得程序知道从哪里找到你引用的头文件

3.使用它。


opencv的安装在windows上究竟是怎么一回事,其实我到现在还没怎么搞清楚。幸而Linux这个过程由于清晰,每一步都需要自己来,反而显得更简单一些。下面我来讲解一下。


1.下载源代码

这个到官网即可。opencv是开源的。根据所在的平台选择要下载的版本……当然这里我要讲的是下载源代码在linux编译使用。

下载到的是.zip文件,我将其解压在了/usr/local目录。该目录通常用于本地管理员自行添加安装在系统中的程序。


2.编译

很多源代码下载下来是通过make文件来编译执行的,在那之前往往还要通过configure文件来检查系统配置来生成makefile文件。而opencv使用cmake来组织自己的代码。所以首先需要安装cmake才能继续整个过程。cmake是一个类似make但功能更丰富的软件,通过它能完成原来用configure完成的工作,生成makefile文件。

像我使用的是Ubuntu发行版,只需sudo apt-get install cmake 就能完成安装。其他使用apt或者yum的发行版也都类似。


/usr/local/opencv-2.4.8(或者是你下载到的其它版本号,总之是刚刚解压出来的文件夹)目录下,执行sudo cmake .   (注意最后面有一个".",表示在当前目录下执行cmake)。一般而言,这个时候你会发现,跳出了一大堆的not found.表示有相当多的依赖类库还没有安装.


如何解决这个问题?opencv的documentation上有列举了它需要的依赖类库,或者看cmake给出的错误提示也能获得这个列表.

sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev


通过运行上面这个命令,基本能解决依赖的问题.

之后再执行sudo cmake . 就能生成makefile文件.

在同一目录下运行sudo make && sudo make install

就能完成对opencv的编译.


3.路径添加

在 /etc/ld.so.conf.d/opencv.conf文件中添加/usr/local/lib.这个文件需要自己创建。

/etc/ld.so.conf文件中包含了需要加载的动态链接库的路径,打开可以看到里面写的是:

include /etc/ld.so.conf.d/*.conf,因此在该目录下建立opencv.conf即可。

完成之后勿忘sudo ldconfig


 /etc/bash.bashrc

该文件用于初始化shell,打开bash时会读取这个文件的信息。现在要做的是在里面加入环境变量。

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

该命令即在PKG_CONFIG_PATH当中加入/usr/local/lib/pkgconfig。


重新登陆账户即可让配置生效


4.测试

cd /usr/local/opencv/samples/c

sudo chmod +x build_all.sh
sudo ./build_all.sh

./facedetect


显示的是通过摄像头进行人脸检测的程序。sample目录下其他文件也都是可用的例子。


5.手动编译程序

我用了learning opencv上的例程

#include "highgui.h"

 

int main( int argc, char** argv )

{

IplImage* img = cvLoadImage( argv[1] );

cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE );

cvShowImage("Example1", img );

cvWaitKey(0);

cvReleaseImage( &img );

cvDestroyWindow("Example1");

}

g++ -o ep1 ch2_ex2_1.cpp $(pkg-config --libs --cflags opencv)

./ep1 me.jpg 

就能看到预先放在目录下的图片啦。

pkg-config --libs --cflags 命令是为了获得编译所需的库的相关信息,两个参数都是为了加入相关编译选项。


到这里整个过程就完成了,剩余的使用就需要自己摸索了!



0 0
原创粉丝点击