Linux 下编译安装OpenCV

Linux 下编译安装OpenCV

1Cmake的安装

OpenCV 2.2以后版本需要使用Cmake生成makefile文件,因此需要先安装cmakeCentos下安装cmake比较简单:

yumt install cmake

如果觉得自带的版本不符合要求,可以下载安装包。

1)      安装编译所需要的包

yum -y install gcc

yum installl gcc-c++ yum 安装g++时,程序名不是 g++,而是 gcc-c++,否则搜不到。

yum install make

 

2)      下载最新版的安装包并安装

Ø  下载cmake源码cmake-2.6.2.tar.gzhttp://www.cmake.org/cmake/resources/software.html

Ø  编译安装

tar xvf cmake-3.2.2.tar.gz

cd cmake-3.2.2/

如果本机上不存在cmake,则:

./bootstrap

make

make install

如果本机上存在cmake,想安装一个新版本,则:

cmake .

make

make install

Ø  查看安装版本,验证是否成功

root@emouse:/home# cmake --version 

cmake version 3.2.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).

 

2、安装libgtk2.0-dev  pkg-config

先安装 libgtk2.0-dev  pkg-config,,否则后期编译运行程序会出现类似如下的问题:

OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow, file /usr/local/opencv/OpenCV-2.0.0/src/highgui/window.cpp, line 100

terminate called after throwing an instance of 'cv::Exception'

可以直接用

yum install gtk*

gtk*安装完了以后会带有pkg-config

yum info pkgconfig 查看是否已经安装

 

Ubuntu通过网络安装

# apt-get install libgtk2.0-dev

# apt-get install pkg-config

3、源码安装opencv 

a)      下载opencvhttp://www.opencv.org.cn/index.php/Download

b)     安装opencv-2.3.1

tar -xvf OpenCV-2.3.1.tar.bz2

cd OpenCV-2.3.1/

mkdir release

cd release

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON ..

make

sudo make intall

c)      添加库路径

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

添加:/usr/local/lib可能会没有opencv.conf这个文件,那我们就自己创建一个

d)     更新系统库

$sudo ldconfig

e)      设置环境变量

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

f)       测试

cd samples/c

chmod +x build_all.sh

./build_all.sh

./facedetect --cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 lena.jpg

     

可以看到以下图片,说明opencv 安装正常

 

4、遇到的问题

问题1(result:20195): Gtk-WARNING **: cannot open display: 

[root@tvie c]# ./facedetect --cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 lena.jpg

执行后返回:

Processing 1 --cascade=/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml

  from which we have cascadeName= /usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml

Processing 2 --scale=1.5

 from which we read scale = 1.5

Processing 3 lena.jpg

(result:20195): Gtk-WARNING **: cannot open display: 

 

解决方案:

1. SDL安装

2. ssh连接配置,x11forwarding

 

VNC方式不同,qemu-kvm利用图形界面方式开启虚拟机,会以弹出窗口的方式与虚拟机交互。某些情况下,工作环境是通过各种term程序利用ssh登录到服务器,这时执行qemu的启动程序,通常会产生“Gtk-WARNING **: cannot open display”的错误。

造成这种情况的原因有很多,简单来说,服务器与本机环境之间要互相收发图形界面信息,两端要规定一种特殊的信息约定,用于编写和翻译图形界面信息,这就需要一个软件来完成这个特殊的编解码,此处一般为SDL,同时建立连接的程序还必须允许该软件在这个连接上可信。打个比方,两个国家间互相运输货物,货物必须经过拆解才能放上船,到达后根据双方约定可组装起来以供使用。同时,两国的海关需要允许货物出关和入关。此处,SDL即为双方的约定,ssh的安全机制为海关。

SDL是一个跨平台的多媒体图形声音界面库,开发者基于它开发上层图形界面程序,只需底层平台支持SDL库。简介:http://zh.wikipedia.org/wiki/SDL。项目主页:http://www.libsdl.org/

 

针对以上的几个主要环节,任何一个环节出现问题,都会出现标题所示的提示信息。所以,采取各个击破的解决办法:

1. SDL安装问题,开发机与本机环境必须都支持SDL,在两台机器上正确安装或更新SDL程序

2. ssh开启X11Forwarding

    linux/etc/ssh/sshd_config中,添加 X11Forwarding yes

    https://img-blog.csdn.net/20140215172416718

    本机客户端为一些桌面终端程序如Xshell,需要在ssh连接设置里面勾选X11forwarding选项:

    https://img-blog.csdn.net/20140215172557015

    Mac系统需要安装X桌面X11-XQuartzhttps://xquartz.macosforge.org/trac/wiki),在包括linux的使用X11的平台上,SDL基于Xlib而编写。某些时候需要保持ssh连接,所以在建立ssh连接时添加-Y选项或修改客户端/etc/ssh/ssh_configForwardX11Trusted yes,添加信任项。

至此,几种本机与服务器情况基于以上步骤都解决了。

 

问题2

./build_all.sh: line 14: pkg-config: command not found

解决方案:

先安装pkg-config,在安装openCV,否则环境会配置失败。可以yum install gtk*也可以下载后编译安装,地址http://download.chinaunix.net/download/0009000/8174.shtml

Ø  运行配置文件进行系统配置 : ./configure

Ø  编译pkgconfig : make

Ø  安装包自检测 : make check

Ø  安装 :make install

 

问题3

CentosSDL-1.2.x Library 的安装

解决方案:

    Linux下许多软件都必须有SDL库的支持,尤其是些游戏和比较炫的软件,其中SDL库是夸平台的,用起来十分方便。SDL的定义如下:

baidu百科:SDLSimple DirectMedia Layer)是一个自由的跨平台的多媒体开发包,适用于 游戏、游戏SDK、演示软件、模拟器、MPEG播放器和其他应用软件。

a)     安装官方包

SDL库大致可分为一下几部分 sdl_image,sdl_mixer,sdl_net,sdl_ttf,sdl_rft,各个库的功能wiki都有明确的解释,一般只需要前4个库就可以了,但是Linux系统中一般需要重新安装SDL,而Centos官方库中只有 SDL.i386 SDL-devel.i386,可使用yum install 来安装,

[]# yum list *SDL*

---SDL.i386

---SDL-devel.i386

[]# yum install SDL.i386

[]# yum install SDL-devel.i386

 

b)     2.安装扩展包(可以不安装先)

安装完官方的包后,只能在寻找对应自己系统的运行库和开发库,由于没有Centos官方包的支持,所以软件依赖性的问题折磨了许久,最后发现要现安装runtime版本,再安装development版本(有点费解)。我只安装了前3个,不过后两个也可以以后装,我的系统是Centos5.5所以找到对应的软件包,注意:开发库也就是devel的版本必须和runtime版本是一样的,我下载了这几个包:

SDL_image-1.2.5-4.el5.i386.rpm

SDL_image-devel-1.2.5-4.el5.i386.rpm

SDL_mixer-1.2.4-7.i386.rpm

SDL_mixer-devel-1.2.4-9.i386.rpm

SDL_net-1.2.7-7.el5.i386.rpm

SDL_net-devel-1.2.7-7.el5.i386.rpm

以上包可在这个下载地址中search

这些添加库中最麻烦也是最重要的就是SDL_image,许多问题就是出在他上面,需要注意。

以后挨个安装每个库就可以了,开发版本要最后装。

到这里 SDL Library 就安装完了,不同的linux版本所需的版本不同,还要区分来装,这样安装后还有不少问题,以后有待解决,不过这样大致就可以用了。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值