红联Linux门户
Linux帮助

Linux系统下的OpenCV编译以及OpenCV的Qt上的使用

发布时间:2015-09-24 09:38:14来源:linux网站作者:你猜你猜啊

背景:

Ubuntu 15.04

Qt 5.2.1

OpenCV 3.0.0


资料全部来源于网络,我只是资料的搬运工。

首先,我们应该安装几个必要的东西
 
sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev

这里,我感觉有一些python相关的,不用安装(我这里使用的是c++)。我没有进行验证。


其次 GCC还是要装一下的,虽然Ubuntu系统会自带,但是还是提一句吧:
 
sudo apt-get install gcc

去OpenCV官方网站下载Linux版本的OpenCV,这里我要提一句,不同的OpenCV的编译方式,大致相同,但是仍然有一定的差异,这要注意。


下载好了,就可以将压缩文件进行解压,我这里一般解压到/home/x文件夹下,x是用户名。

解压好了,进入/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。

上面这段是引用的,当然,这里还需要一个步骤,修改系统环境变量


编辑环境变量
 
<em>hugo@hugo-ThinkPad-Edge:~/Downloads/OpenCV-2.4.1/build$ sudo vim /etc/ld.so.conf.d/opencv.conf</em>

添加opencv库所在路径:
 
<em>/usr/local/lib
</em>
 
<em>hugo@hugo-ThinkPad-Edge:~/Downloads/OpenCV-2.4.1/build$ sudo ldconfig
</em>
 
<em>hugo@hugo-ThinkPad-Edge:~/Downloads/OpenCV-2.4.1/build$ sudo vim /etc/bash.bashrc
</em>


在末尾添加:
 
<em>PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH<br><br><br>
</em>

上面的依旧是引用部分,到这里,如果没有错误,基本上就没什么问题了。不要掉以轻心,还要有一些东西需要做一下。<br>当我们使用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着一条别忘了。


Fedora22下移植opencv-2.4.10:http://www.linuxdiyf.com/linux/14270.html

在Fedora22中安装OpenCV3.0.0:http://www.linuxdiyf.com/linux/12610.html

Ubuntu14.04安装OpenCV3.0:http://www.linuxdiyf.com/linux/13854.html

Ubuntu14.04下安装OpenCV 3.0.RC1:http://www.linuxdiyf.com/linux/13355.html

Ubuntu 14.04下OpenCV 3.0+Python 2.7安装测试:http://www.linuxdiyf.com/linux/11903.html