《学习OpenCV 3(中文版)》 —从Git获取最新的OpenCV
从Git获取最新的OpenCV
OpenCV现在也处于积极的开发状态中,当bug报告中包含有准确的描述以及代码复现 bug的时候,该bug通常会被迅速修复。然而,官方的OpenCV通常每年只发布一次到两次,如果你正在开发一个项目或产品,可能想要OpenCV能够尽快修复bug并更新。为了完成这些目的,需要在GitHub网站***问OpenCV的Git仓库。
本节并不打算引导你如何使用Git,如果你还在使用另外的一些开源项目,也许对这套操作已经很熟悉了。如果对此并不熟悉,请查阅Jon Loeliger(乔恩 • 罗力格)所著的《Git 版本控制管理》(http://shop.oreilly.com/product/0636920022862.do)。Git的命令行工具有Linux,OS X以及大部分的类UNIX系统所支持。针对Windows,我们推荐TortoiseGit
(https://tortoisegit.org/);针对OS X,SourceTree也许适合。
在Windows上,如果想要从Git获得OpenCV最新的版本,你需要访问https://github.com/ opencv/opencv.git。
在Linux上,只需要输入如下指令:
git clone https://github.com/opencv/opencv.git
更多的OpenCV文档
OpenCV基础文档可以在http://opencv.org获取。另外,在http://docs.opencv.org/2.4.13/ doc/tutorials/tutorials.html,也可以获得更多深入教程,OpenCV的维基网站页面现在位于https://github.com/opencv/opencv/wiki。
提供的文档
OpenCV 2.x自身就提供PDF格式的完整的引用手册以及丰富的教程,查看opencv/doc目录就可以得到。从OpenCV 3.x开始,就不再提供离线的文档了。
在线文档和维基资源
正如我们之前提到的,在https://opencv.org上有大量的文档和维基资源。文档分为以下几个主要部分。
参考(http://docs.opencv.org/)
这个部分包含函数、它们的参数以及如何使用它们的一些信息。
教程(http://docs.opencv.org/trunk/d9/df8/tutorial_root.html)
这个部分是许多教程的集合,这些教程会告诉你如何完成各种各样的事情。这里有一些基础课程的教程(比如如何在不同平台上安装OpenCV或者创建OpenCV项目)以及一些更高级的话题(比如目标检测的背景提取算法)。
快速指南(http://opencv.org/quickstart.html)
本部分包含一个精心编制的快速指南,只包含帮助你在特定平台上获取和运行
OpenCV的内容。
速查表(http://docs.opencv.org/3.0-last-rst/opencv_cheatsheet.pdf)
只有一页篇幅的PDF文档,包含整个库的高度压缩的参考。感谢Vadim Pisarevsky制作了这个出色的速查表,这样你就可以把这漂亮的两页纸钉在小隔间的墙上随时查阅。
维基(https://github.com/opencv/opencv/wiki)
维基包含所有你可能想要的东西,甚至可能超乎你的想象。在这里,可以找到路线图、新闻、开放问题、bug追踪以及无数个更深入的主题,比如如何成为OpenCV的贡献者。
问答社区(http://answers.opencv.org/questions/)
问答社区是一个庞大的、包含数千个人遇到过的问题的档案集合。可以在这里向OpenCV社区提问,或者通过回答问题帮助其他人。
以上所有在OpenCV.org的底部的有超链接可以访问。在这些高质量的资源中,有一个更值得我们讨论——“参考”。参考划分为几个部分,每个部分都和库中一个模块有关。具体的模块列表随着时间推移而不断的发展,但模块始终是组成这个库的基本单位。每个函数都是一个模块的一部分,以下是当前OpenCV所拥有的模块。
Core
该模块包含OpenCV库的基础结构以及基本操作。
Improc
图像处理模块包含基本的图像转换,包括滤波以及类似的卷积操作。
Highgui(在OpenCV 3.0中,分割为imcodecs、videoio以及highgui三部分)
这个模块包含可以用来显示图像或者简单的输入的用户交互函数。这可以看作是一个非常轻量级的Windows UI工具包。
Video
该模块包含读取和写视频流的函数。
Calib3d
这个模块包括校准单个、双目以及多个相机的算法实现。
Feature2d
这个模块包含用于检测、描述以及匹配特征点的算法。
Objdectect
这个模块包含检测特定目标,比如人脸或者行人的算法。也可以训练检测器并用来检测其他物体。
Ml
机器学习模块本身是一个非常完备的模块,包含大量的机器学习算法实现并且这些算法都能和OpenCV的数据类型自然交互。
Flann
Flann的意思是“快速最邻近库”。这个库包含一些你也许不会直接使用的方法,但是其他模块中的函数会调用它在数据集中进行最邻近搜索。
GPU(在OpenCV 3.x中被分割为多个cuda*模块)
GPU模块主要是函数在CUDA GPU上的优化实现,此外,还有一些仅用于GPU的功能。其中一些函数能够返回很好的结果,但是需要足够好的计算资源,如果硬件没有GPU,则不会有什么提升。
Photo
这是一个相当新的模块,包含计算摄影学的一些函数工具。
Stitching
本模块是一个精巧的图像拼接流程实现。这是库中的新功能,但是,就像Photo模块一样,这个领域未来预计有很大的增长。
Nonfree(在OpenCV 3.0中,被移到opencv_contrib/xfeatures2d)
OpenCV包含一些受到专利保护的或者受到使用限制的(比如SIFT算法)算法。这些算法被隔离到它们自己的模块中,以表明你需要做一些特殊的工作,才可以在商业产品中使用它们。
Contrib(在OpenCV 3.0中,融合进了opencv_contrib)
这个模块包含一些新的、还没有被集成进OpenCV库的东西。
Legacy(在OpenCV 3.0中,被取消)
这个模块包含一些老的尚未被完全取消的东西。
Ocl(在OpenCV 3.0中,被取消,取而代之的是T-API)
这是一个较新的模块,可以认为它和GPU模块相似,它实现了开放并行编程的 Khronos OpenCL标准。虽然现在模块的特性比GPU模块少很多,但Ocl模块的目标是提供可以运行在任何GPU或者是其他可以搭载Khronos的并行设备。这与GPU模块形成了鲜明的对比,后者使用Nividia CUDA工具包进行开发,因此只能在NividiaGPU设备上工作。
尽管在线文档的质量越来越高,但并没有充分解释算法的实现细节及期所要求的参数的准确含义。这本书的目的是提供这些信息以及帮助读者更深入地理解库中所有的基本模块。
- 点赞
- 收藏
- 关注作者
评论(0)