前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ubuntu 12.04 + opencv 2.4.1 + Qt 4.8.3 + Qt creater 2.5.2 安装配置

Ubuntu 12.04 + opencv 2.4.1 + Qt 4.8.3 + Qt creater 2.5.2 安装配置

作者头像
s1mba
发布2018-01-03 17:41:39
1.7K0
发布2018-01-03 17:41:39
举报
文章被收录于专栏:开发与安全

整体参考:http://www.cnblogs.com/tornadomeet/archive/2012/07/10/2584702.html

1. opencv库的安装参考http://www.samontab.com/web/2012/06/installing-opencv-2-4-1-ubuntu-12-04-lts/

最好按照上面的步骤安装,提供更多支持,opencv.org有更简便的办法,但貌似很多东西没装上。

2.Qt库编译安装参考:http://www.linuxidc.com/Linux/2012-06/62606.htm

注意 ./configure 时最好只制定路径 --prefix ;其他不要乱设,容易出问题

安装过程可能出现 warning ,即使./configure加上 -no-webkit 还是会出现,不过好像不影响。

编译过程出现提示说没有权限什么的,就sudo执行。

如果编译完错误,想重新编译,则(进入make的路径,一般是在解压后的文件夹内如/xxxopensource-src/进行make操作)

直接运行下面的命令就行了。 make   uninstall make   clean rm -rf XXX  //XXX 目录 如果是编译过程出错,要重新编译 那就 make clean 然后再 ./configure     make && make install

如果想编译成静态库,要在./configure 加上--enable-static。在使用静态库时需要在 QMAKE_LFLAGS 后面加上 –static

Remember that when you ran make, all the executables were created in the temporary directory where you had unzipped your original tarball. So when you run make install, these executables are copied to the final directories(./configure --prefix=xxx).

make 后把产生的文件放在原来解压的目录下,可能有一些是隐藏文件夹如 .libs。一些不用配置prefix 的 make install 后会把 头文件和库文件分别放在

系统的include 和 lib 目录下。而需要配置 prefix 的 make install 后会把头文件和库文件分别放在配置目录下,有时候还可能产生 bin 文件。

3. Qt creater 安装参考http://www.linuxidc.com/Linux/2012-06/62607.htm

如果安装完出错想卸载,源文件是.bin,应该会有个uninstall文件,给予执行权限,卸载。

4.直接在ubuntu软件中心搜出来的QT,安装完很多东西是没有的,比如运行程序时可能不会出现qtcreater_process_stub,只弹出一个terminal,但找到可执行文件还是可以点击执行的。

5.下载点http://qt-project.org/downloads只有最新版本,老版本可以去ftp下载ftp://ftp.qt.nokia.com/qt/source/

opencv下载点http://sourceforge.net/projects/opencvlibrary/files/

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

在还没装QT想使用opencv的情况下,需要用下列命令编译:

g++ canny.c `pkg-config opencv --libs --cflags opencv` -o canny

需要注意的是opencv.org提供的例程中有些是从main函数传参数的,如 ./xxx ./agrv[1]  //当然参数可以带路径的

运行结果如图:

如果不是从主函数传参,则一般需要把图片文件放在.c文件同个目录下。注意程序中图片文件名不要写错。

----------------------------------------------------------------------------------------------------------------------------------------------

安装完QT与QTcreater之后,打开qtcreater 选择tools--option --run & debug --qt version 选择我们安装的/usr/local/qt 4.8.3/bin/qmake 注意每个人的路径有可能是不一样的。

在QTcreater里面使用opencv库时需要注意一点的是,需要将opencv的头文件和库文件与Qt关联起来,所以在双击QtCreator工程下到***.pro文件,在其后面添加下列代码:

INCLUDEPATH +=  /usr/local/include  \

                             /usr/local/include/opencv  \

                         /usr/local/include/opencv2

LIBS += /usr/local/lib/libopencv_video.so  \

  /usr/local/lib/libopencv_ts.so \

  /usr/local/lib/libopencv_objdetect.so \

  /usr/local/lib/libopencv_ml.so  \

  /usr/local/lib/libopencv_legacy.so \

  /usr/local/lib/libopencv_core.so \

  /usr/local/lib/libopencv_features2d.so  \

  /usr/local/lib/libopencv_imgproc.so \

  /usr/local/lib/libopencv_highgui.so \

  /usr/local/lib/libopencv_gpu.so \

  /usr/local/lib/libopencv_flann.so   \

  /usr/local/lib/libopencv_contrib.so \

  /usr/local/lib/libopencv_calib3d.so

include路径就不用解释了,按照共享库的命名惯例,每个共享库有三个文件名:real name、soname和linker name。

真正的库文件(而不是符号链接)的名字是real name,包含完整的共享库版本号。

soname是一个符号链接的名字,只包含共享库的主版本号,主版本号一致即可保证库函数的接口一致,因此应用程序的.dynamic段只记录共享库的

soname,只要soname一致,这个共享库就可以用。例如libcap.so.1和libcap.so.2是两个主版本号不同的libcap,有些应用程序依赖于libcap.so.1,有

些应用程序依赖于libcap.so.2,但对于依赖libcap.so.1的应用程序来说,真正的库文件不管是libcap.so.1.10还是libcap.so.1.11都可以用,所以使用共

享库可以很方便地升级库文件而不需要重新编译应用程序,这是静态库所没有的优点。注意libc的版本编号有一点特殊,libc-2.8.90.so的主版本号是6

而不是2或2.8。

linker name仅在编译链接时使用, gcc 的-L 选项应该指定linker name所在的目录。有的 linker

name是库文件的一个符号链接,有的 linker name是一段链接脚本(/usr/lib/libc.so)。上面的LIBS就是linker name!

如图,libopencv_ts.so是linker name,libopencv_ts.so.2.4是son name,libopencv_ts.so 2.4.1 是real name

在 /etc/ld.so.conf  配置文件中左边的一项可以是son name or link name,只要保证最后能够链接到real name 即可。

注意:我们在include目录增加opencv2的目录,其实你真的要用的话,要继续深入底层目录,才能直接找到头文件。比如在程序中 #include <opencv2/highgui/highgui.hpp>

这样使用链接的相对路径就能找到头文件

还有路径可能大家都不一样,老版本的opencv动态库名称也不一样。

要是嫌麻烦,直接在 /usr/local/Qt-4.8.3/mkspecs/linux-g++/qmake.conf 加入下面命令以及将上面的libs和include都加进去:

QMAKE_INCDIR = /usr/local/include/opencv

QMAKE_LIBS = -lopencv_imgproc  -lopencv_core -lopencv_highgui -lopencv_ml

注:gcc -L选项告诉编译器去哪里找需要的库文件,-L. 表示在当前目录找。-lstack 告诉编译器要链接libstack 库,-I选项告诉编译器去哪里找头文件。

编译器默认会找的目录可以用 gcc  -print-search-dirs 选项查看。其中的libraries 就是库文件的搜索路径列表,各路径之间用:号隔开。编译器会在这些

搜索路径以及-L 选项指定的路径中查找用 -l 选项指定的库,比如-lstack, 编译器会首先找有没有共享库libstack.so,如果有就链接它,如果没有就找有没有

静态库libstack.a ,如果有就链接它。所以编译器是优先考虑共享库的,如果希望编译器只链接静态库,可以指定-static选项。当然也可以具体指定库全称的

路径,如 ../../libstack.a 。

注意,在链接时除了 -L 指定库路径,还可通过 $LIB_LIBRARAY_PATH 和 /etc/ld.so.conf 来查找。

现代连接器在处理动态库时将链接时路径(Link-time path)和运行时路径(Run-time path)分开,用户可以通过-L 指定连接时库的路径,通过-R(或-

rpath)指定程序运行时库的路径,大大提高了库应用的灵活性。

这样以后新建文件就不用每个都去更改.pro文件了。实际上 Makefile 是 由 qmake -o Makefile xxx.pro 产生。

如果你使用IDE编译完一个给main函数传参的程序,那也只能去到命令行执行程序并传参数了(其实也可以在项目配置中添加需要的命令行参数),所谓IDE 只是帮你集成了编译以及调试的工具,如给g++,gdb,还有就是帮你链接一些库文件,使你省去一些输入长命令的工作。先执行build ,再把图片文件放进 生成的xxx-build-desktop-Qt_4_8_3__Qt-4_8_3____目录内。

基于Qt 和 Opencv的一个图像处理小软件,ubuntu 下测试通过,软件操作界面如下:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-04-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档