linux opencv安装与入门记录

--------------------------下载和安装

在github上搜索 opencv 下载最新版

或在opencv.org上下载源码

按官网说明文档,使用cmake按步骤编译编译即可

源码八十兆左右,编译完成后有3个G。。。(猜测是有许多可选项一并编译了,待求证)

--------------------------使用

刚编译完对其还是一头雾水,不知用法。

在官网上看了主要模块的大概介绍。

网上各种例程包含头文件又各有差异。经查证,是由于版本差异。

目前新版的Opencv头文件命名为opencv2,老版的头文件文件夹命名为opencv,推荐使用opencv2。

打开头文件目录,/usr/include/opencv2  (头文件的推荐路径之一) 不同distribution的路径有所差异。使用whereis 可以方便找到。

扫描二维码关注公众号,回复: 1095844 查看本文章


###模块说明

1.core模块是核心模块,包括定义了opencv库所有的数据类型。该模块所有程序都必须包含。

2.highgui是ui相关的模块。包括了图片输出需要用到输出窗口定义。

在opencv2中,核心头文件是 opencv.h或opencv.hpp(从命名上看推荐为c++使用,直接包含了opencv.h)。在我pc上的opencv版本中,该头文件内部还包含了定义是否包含其他模块头文件的选项;而在我服务器所装opencv版本中,该头文件默认包含所有其他模块。都只需在调用时声明这一个头文件,完全不用像网上很多例程声明好几个。


###编译和链接

#学习了部分编译原理:

1.头文件的作用在于:告诉编译器当前编译的这个文件所调用的这些外部函数已经写好了,是存在并且正确的。头文件的作用在编译编阶段发挥。编译器针对单个的文件进行编译,不管其引用的外部函数具体实现,只需要知道有这个函数。

2.库文件与代码的object文件在链接阶段被组合。实现上一步头文件所声明函数的具体化。

#两种生成执行文件方法

1.先将代码生成 .o文件,再与库文件一同链接。主要为了理解编译过程。

2.源代码直接与库文件一同进行编译链接。

重要:

    (1)gcc生成库文件时,库文件名会自动加上lib头和.so(shared object,动态库)或.a(,静态库)。但库名任然为去掉头和尾的部分。

    (2)虽然opencv的库路径在库的环境变量下,但是gcc并没有能力找到对应的库,必须要在链接时给出库名。否则会报错,cv::imread() undefined ...等等

    (3)g++链接格式 ,例:  g++ -o cv_test cv_test.o -lopencv_core -lopencv_highgui

    其中, -l 选项是给出库名。若库路径不在环境变量中,要增加 -L 接路径(选项和参数间的空格可有可无)

    如,g++ -o test test.cpp -L ~/testlib/ -ltestlib1 -ltestlib2

参考: https://www.cs.swarthmore.edu/~newhall/unixhelp/howto_C_libraries.html


#运行

编译完成后,可能会遇到找不到库到错误(不同发行版默认存放库的路径有差异)

error while loading shared libraries

以下转自:https://www.cnblogs.com/codingmengmeng/p/7456539.html

ubuntu中,编译器只会使用/lib和/usr/lib这两个目录下的库文件,通常通过源码包进行安装时,如果不指定--prefix,会将库安装在/usr/local/lib目录下;当运行程序需要链接动态库时,提示找不到相关的.so库,会报错。也就是说,/usr/local/lib目录不在系统默认的库搜索目录中,需要将目录加进去。

1.打开默认库目录的配置文件:/etc/ld.so.conf

2.在"include ld.so.conf.d/*.conf"下方增加"/usr/local/lib"

保存后,在命令行终端执行ldconfig -v;其作用是将文件/etc/ld.so.conf列出的路径下的库文件缓存到/etc/ld.so.cache以供使用,因此当安装完一些库文件,或者修改/etc/ld.so.conf增加了库的新搜索路径,需要运行一下ldconfig,使所有的库文件都被缓存到文件/etc/ld.so.cache中,如果没做,可能会找不到刚安装的库。

另外作者还提到库文件的权限问题,需要在具体使用时留意。

猜你喜欢

转载自blog.csdn.net/ftstic/article/details/79844819