OpenCV安装(Linux)相关问题及解决

一、OpenCV的安装: 选择Ubuntu14.04LFS + opencv2.4.11 ,具体参考官方提供的安装教程

1.先安装个叫cmake 的工具,使用 sudo apt-get install cmake ,安装的应该是最新版;另外可以安装cmake的图形界面
$ sudo apt-get install cmake-gui
输入cmake-gui 即可打开图形界面,可以updatedb 一下软件更新。

2.安装好cmake 后接着下一步,这步很重要,你需要解决很多依赖关系,比如支持jpg,jpeg,png等图形格式、movies等的读写。看操作:在命令行输入以下一串东西:
$ sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev cmake libswscale-dev libjasper-dev

3.下载OpenCV的安装包
3.1 $ cd ~ # 切换到用户目录 /home/user_name/
3.2 使用 wget 命令下载安装到当前工作目录;也可以去官网点击下载你所需版本。
3.3 解压
.zip的解压 unzip xxxxxxx.zip ;
.tar.bz2的解压 tar -xvf xxxxxx.tar.bz2
3.4.进入解压后的文件目录下,例如 cd opencv2.4.11/

  1. 执行以下三个命令
    $ mkdir release
    $ cd release
    $ cmake ..

5.上一步执行成功后,接着进行
$ make
$ sudo make install

  1. 等待上一步执行成功需要一些时间,等待上一步执行成功。以上执行成功后进行一些路径、环境变量的配置。
    6.1 $ sudo vim /etc/ld.so.conf.d/opencv.conf 写入 /usr/local/lib 保存
    6.2 $ sudo ldconfig
    6.3 $ sudo vim /etc/bash.bashrc 在末尾写入
    PKG_CONFIG_PATH=$ PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
    Export PKG_CONFIG_PATH
  1. 最后,restart 重启电脑,否则OpenCV 可能不会正常工作,如果不这么做的话!

  2. 完成以上所有步骤后,接下来就是check一些opencv自带的demos
    $ cd ~
    $ mkdir openCV_samples
    $ cp OpenCV-2.1.0/samples/c/* openCV_samples
    $ cd openCV_samples/
    $ chmod +x build_all.sh
    $ ./build_all.sh

接着输入
$ ./facedetect --cascade="/usr/local/share/opencv/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 lena.jpg


1.png

$ ./bgfg_segm tree.avi
2.png
3.png

如果以上步骤都成功执行,那就成功安装了opencv。

二、不能够成功编译

我的实例:
4.png
5.png

Can't compile opencv in linux问题的解决
详见链接:https://stackoverflow.com/questions/11532963/cant-compile-opencv-in-linux

Try this:
g++ pkg-config --cflags opencv -o hello hello.cpp pkg-config --libs opencv

You can call pkg-config like pkg-config --cflags --libs opencv, too.

According to the [GCC manual] (https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#Link-Options)

It makes a difference where in the command you write this option; the linker searches and processes libraries and object files in the order they are specified. Thus, ‘foo.o -lz bar.o’ searches library ‘z’ after file foo.o but before bar.o. If bar.o refers to functions in ‘z’, those functions may not be loaded.

So the pkg-config --libs opencv has to come at the end of the the filename, else gcc will not be able to resolve the symbols.

g++ hello.cpp -o hello pkg-config --cflags --libs opencv

By Comma.He
Date 2015/07/07

推荐阅读更多精彩内容