背景:html
Ubuntu 15.04java
Qt 5.2.1python
OpenCV 3.0.0c++
资料所有来源于网络,我只是资料的搬运工。shell
首先,咱们应该安装几个必要的东西vim
sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev
这里,我感受有一些python相关的,不用安装(我这里使用的是c++)。我没有进行验证。bash
其次 GCC仍是要装一下的,虽然Ubuntu系统会自带,可是仍是提一句吧:网络
sudo apt-get install gcc
去OpenCV官方网站下载Linux版本的OpenCV,这里我要提一句,不一样的OpenCV的编译方式,大体相同,可是仍然有必定的差别,这要注意。dom
下载好了,就能够将压缩文件进行解压,我这里通常解压到/home/x文件夹下,x是用户名。tornado
解压好了,进入/home/x/opencv-3.0.0
这里的网上的教程提供了一种方法,进行编译。在opencv-3.0.0中建立一个叫作release的文件夹(名字无所谓的)
这里咱们须要cmake这个东西,使用它能够进行编译,cmake在前面的命令中已经安装好了,咱们不用操心了。
这里须要这样的一个命令,cmake编译OpenCV源码,全部的lib文件都会被安装到/usr/local目录下
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local
这个地方其实要花费很长时间的,其中有可能会存在错误,我这里一直很顺,我也不能给出具体措施,抱歉。
安装
make
sudo make install
环境变量pkg_config_path 提供编译时和运行时库的路径查询。pkg-config 是经过库提供的一个 .pc 文件得到库的各类必要信息的,包括版本信息、编译和连接须要的参数等。这些信息能够经过 pkg-config 提供的参数单独提取出来直接供编译器和 连接器使用。使用 pkg-config 的 --cflags 参数能够给出在编译时所须要的选项,而 --libs 参数能够给出 连接时的选项。
在上述opencv 的安装结束后,pkg-config 的读取目录 /usr/local/lib/pkgconfig/ 下已经有opencv.pc。
上面这段是引用的,固然,这里还须要一个步骤,修改系统环境变量
编辑环境变量
hugo@hugo-ThinkPad-Edge:~/Downloads/OpenCV-2.4.1/build$ sudo vim /etc/ld.so.conf.d/opencv.conf
添加opencv库所在路径:
/usr/local/lib
hugo@hugo-ThinkPad-Edge:~/Downloads/OpenCV-2.4.1/build$ sudo ldconfig
hugo@hugo-ThinkPad-Edge:~/Downloads/OpenCV-2.4.1/build$ sudo vim /etc/bash.bashrc
在末尾添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH
上面的依旧是引用部分,到这里,若是没有错误,基本上就没什么问题了。不要掉以轻心,还要有一些东西须要作一下。
当咱们使用g++进行编译的时候,须要注意这么几点
g++ `pkg-config opencv --cflags --libs opencv` -o test test.cpp -I /usr/local/include/opencv -L /usr/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_objdetect -lopencv_imgcodecs
上面的编译命令,也是来自引用 ,注意两点:
1,'pkg-config opencv --cflags --libs opencv'这个东西,要有的,没有的话,编译不成功。
环境变量pkg_config_path 提供编译时和运行时库的路径查询。pkg-config 是经过库提供的一个 .pc 文件得到库的各类必要信息的,包括版本信息、编译和连接须要的参数等。这些信息能够经过 pkg-config 提供的参数单独提取出来直接供编译器和 连接器使用。使用 pkg-config 的 --cflags 参数能够给出在编译时所须要的选项,而 --libs 参数能够给出 连接时的选项。
2,要有不少连接文件,不然就汇出问题,连接文件位于/usr/local/lib中,OpenCV3.0.0中须要注意的地方是opencv_imgcodecs这个连接文件,在其余版本的OpenCV中没有须要,这里咱们必定要将它放进来,要否则会有问题。
第二部分,Qt的配置
咱们若是按照上面的内容进行配置,应该问题不算大的。
Qt的配置,主要在项目文件中添加以下
INCLUDEPATH+=/usr/local/include\ /usr/local/include/opencv\ /usr/local/include/opencv2 LIBS+=/usr/local/lib/libopencv_highgui.so\ /usr/local/lib/libopencv_core.so\ /usr/local/lib/libopencv_imgproc.so\ /usr/local/lib/libopencv_imgcodecs.so
咱们能够看到,上面的这些,和shell中使用g++编译的连接库什么的很类似。尤为是/usr/local/lib/libopencv_imgcodecs.so着一条别忘了。
引用资料以下,万分感谢!!!
http://blog.163.com/huai_jing@126/blog/static/171861983201311103411229/
http://www.douban.com/note/433807086/
http://www.2cto.com/os/201404/291798.html
http://blog.csdn.net/WL2002200/article/details/45741635
http://www.cnblogs.com/tornadomeet/archive/2012/07/10/2584702.html