概述

使用OpenCV的过程中经常查看文档,每次都去官网查看,不过国内访问速度很慢,有一份本地的文档就好了。本文列出了在Linux(Fedora)系统上从OpenCV源码编译出documentation的步骤。在Windows系统上也可以编译出文档,只需在cmake-gui界面中勾选build-doc并根据提示信息安装相应依赖程序,generate后用visual studio编译安装文档。

你也可以直接下载我编译生成好的文档:

OpenCV-3.0.0文档:百度云盘 我的github项目

OpenCV-3.1.0文档:百度云盘

如果你觉得pdf格式的文档看起来就够了,可以到这里这里下载。本文讲的是html格式的文档,以网站形式展示的,可以部署在本机或(局域网)服务器上的。

以下是在Fedora系统上编译的具体步骤,Ubuntu下的操作基本一致。

改CMakeLists.txt

首先,干掉CMakeLists.txt中的IPP和CUDA,CUDA是GPU相关的暂时用不到;IPP这东西似乎是有License的问题,不在opencv下载的包中,它会去自动下载,但是下载速度太慢(原因我并不懂。。),当然你也可以到CMakeLists.txt相关文件中去找下它的下载地址。

yum install cmake #先确保装了cmake,否则无法编译
cd opencv-2.4.11
vim CMakeLists.txt

找到如下两行,在行首添加#来注释掉:

#OCV_OPTION(ITH_CUDA           "Include NVidia Cuda Runtime support" 

#OCV_OPTION(WITH_IPP            "Include Intel IPP support"                   OFF  IF (MSVC OR X86 OR X86_64) )

生成文档

接下来,执行cmake:

#先确保你在opencv-2.4.11目录
mkdir build
cd build
cmake ..

然后要执行make html_docs,需要先安装python-sphinx,texlive和doxygen最好也安装下。

怎样看出要安装这些软件?执行cmake ..后有个汇总,看Documentation部分的说明就知道了。比如:

--   Documentation:
-- Build Documentation: YES
-- Sphinx: /usr/bin/sphinx-build (ver 1.2.3)
-- PdfLaTeX compiler: /usr/bin/pdflatex
-- Doxygen: YES (/usr/bin/doxygen)

那么这段说明是怎么生成的?是根据CMakeLists.txt生成的。所以要安装什么具体的软件,也可以先去CMakeLists.txt中去看个究竟:

# ========================== documentation ==========================
if(BUILD_DOCS)
status("")
status(" Documentation:")
if(HAVE_SPHINX)
status(" Build Documentation:" PDFLATEX_COMPILER THEN YES ELSE "YES (only HTML and without math expressions)")
else()
status(" Build Documentation:" NO)
endif()
status(" Sphinx:" HAVE_SPHINX THEN "${SPHINX_BUILD} (ver ${SPHINX_VERSION})" ELSE NO)
status(" PdfLaTeX compiler:" PDFLATEX_COMPILER THEN "${PDFLATEX_COMPILER}" ELSE NO)
status(" Doxygen:" HAVE_DOXYGEN THEN "YES (${DOXYGEN_BUILD})" ELSE NO)
endif()

ok,这里看到sphinx、pdflatex_compiler、doxygen,其实很蛋疼的一点是名字并不总能和rpm仓库中的包名字对应,我用yum search pdflatex执行查找,在fedora22上找不就叫pdflatex的软件。不过google后发现,安装texlive后就可以了,它会把pdflatex装好的。

接下来就去生成html文档:

make html_docs  #这个是sphinx风格的文档
make doxygen #这个是doxygen风格的文档
#两者各有千秋

P.S 如果是opencv-3.0.0,执行cmake后发现make没有html_docs的选项,目测是官方把sphinx格式的文档抛弃了。毕竟有了doxygen了,是用markdown格式写的,还是比较赞的。

编译报错的处理

上面是正常的步骤,但是很可能报错。我遇到的主要是texlive的问题。当然,如果先前不把pdflatex装上去,可能没有这么麻烦。。。

首先是报错说"bbm.sty找不到"。然后fedora22的dnf(yum)中,找不到bbm的包。手动安装:

wget http://mirror.hmc.edu/ctan/macros/latex/contrib/bbm.zip
unzip bbm.zip
sudo mv bbm /usr/share/texlive/texmf-dist/tex/latex #如果是centos7,那么是/usr/share/texlive/texmf/tex/latex目录
cd $_
latex bbm.ins #执行安装
sudo texhash #更新数据库

还没完,还需要安装这些:

sudo yum install dvipng   #当然,如果是centos7,默认好像是装好的

尝试再次make html_docs,发现卡在75%的地方,报错说:

writing output... [ 75%] modules/ml/doc/expectation_maximization
Exception occurred:
File "/usr/lib/python2.7/site-packages/docutils/nodes.py", line 344, in __new__
return reprunicode.__new__(cls, data)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 723: ordinal not in range(128)
The full traceback has been saved in /tmp/sphinx-err-qQfbOj.log, if you want to report the issue to the developers.
Please also report this if it was a user error, so that a better error message can be provided next time.
Either send bugs to the mailing list at <http://groups.google.com/group/sphinx-dev/>,
or report them in the tracker at <http://bitbucket.org/birkenfeld/sphinx/issues/>. Thanks!
make[3]: *** [doc/CMakeFiles/html_docs] 错误 1
make[2]: *** [doc/CMakeFiles/html_docs.dir/all] 错误 2
make[1]: *** [doc/CMakeFiles/html_docs.dir/rule] 错误 2
make: *** [html_docs] 错误 2

这时候把$LANG变量从zh_CN.UTF-8换调,再编译:

sudo export LANG=en_US.UTF-8
make html_docs

这样可能还会出现问题吧,不过确实是能生成documentation了,latex公式也都基本转换为图片显示了,所以就不再细究了。

这个过程很繁琐,我上传了一份到百度云,可下载之。

另外推荐一个chrome插件:gooreplacer,谷歌的各种css和js直接从科大API获取,stackoverflow什么的网站都能加速了!

======

以下是原文

写程序文档必不可少。基本用法都在文档上。

OpenCV的HTML文档

opencv的windows版本解压后有doc目录,里面是pdf格式的文档。查询某个函数用法时不是很方便。

opencv官网英文文档是web形式的,http://www.docs.opencv.org/,有查询框,可以查询指定的函数,使用方便。

但是opencv官网访问速度还是有点慢,我们自行创建opencv的html格式文档,部署在本地。

首先下载opencv源代码,解压并执行cmake生成makefile。发现很多没有用的选项比如ipp,cuda,对于生成文档没有帮助,在CMakeLists.txt中去掉。

然后执行make html_docs生成文档。

用python建立简单的http服务器并部署文档站点:python -m SimpleHTTPServer 8080

访问站点,发现奇卡无比。因为使用了google的一些js脚本,谷歌无法正常访问导致的。

到最外层doc目录修改sphinx的模板。html_docs中的html是用rst文档生成的,通过sphinx生成的。

修改后重新cmake,make html_docs,部署,访问,速度正常。enjoy it!

下载:http://pan.baidu.com/s/1dD91nrz

numpy的HTML文档

numpy官方文档下载:http://docs.scipy.org/doc/numpy/numpy-html-1.9.1.zip

谷歌访问不了,导致一些js文件、字体无法正常显示,并影响文档显示速度。

本文档为删除了谷歌相关的js文件、字体样式的文档,访问速度迅速。

下载:http://pan.baidu.com/s/1ntA6XBz

编译OpenCV文档的更多相关文章

  1. protobuf编译.proto文档

    1:在同一目录下按键盘shift+鼠标右键-->点击-->在此处打开命令窗口,打开后如下图所示 2.该目录下有person.proto文档,可以自己编写,如下 syntax = " ...

  2. 深入学习OpenCV文档扫描及OCR识别(文档扫描,图像矫正,透视变换,OCR识别)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 下面 ...

  3. Sphinx编译docs文档

    在使用Python.Django的过程中,经常看到docs目录,里面存放着一些txt文本文件,也就是自带的一些帮助文档,里面有make.bat,在dos目录下直接执行make,给出的帮助是可以转换成H ...

  4. 【OpenCV文档】用于角点检测的Fast算法

    原文地址:http://docs.opencv.org/trunk/doc/py_tutorials/py_feature2d/py_fast/py_fast.html#fast-algorithm- ...

  5. SLAM: 图像角点检测的Fast算法(OpenCV文档)

    官方链接:http://docs.opencv.org/trunk/doc/py_tutorials/py_feature2d/py_fast/py_fast.html#fast-algorithm- ...

  6. Qt之CMake和MinGW编译OpenCV

    这里编译的是最新版OpenCV3.4.3,编译过程比较曲折,大部分编译错误都可以查得到解决方法,也遇到了Google无果的错误,好在最后还是解决了,特此记录. 编译环境 win10-64bit Qt5 ...

  7. 使用 flow.ci 快速发布你的项目文档

    软件研发的协作过程中,文档是必不可少的一环,有需求文档.接口文档.使用文档等等.当开始写文档时,首先会遇到两个问题: team members 之间如何协作? 文档 OK 后如何分发,去哪里看?如何更 ...

  8. 开源的api文档管理系统

    api文档 php 在项目中,需要协同开发,所以会写许多API文档给其他同事,以前都是写一个简单的TXT文本或Word文档,口口相传,这种方式比较老土了,所以,需要有个api管理系统专门来管理这些ap ...

  9. api文档管理系统合集

    1.Swagger 2.Showdoc 3.EOAPI 4.阿里的RAP 5.postMan 6.docute: 无需编译的文档撰写工具 7.SmartWiki 接口文档在线管理系统 8.SosoAp ...

随机推荐

  1. 自助式BI为何能取代传统BI,逐渐占据商业智能市场?

    前言:未来的时代将由数据勾画,未来的BI将是自助BI的时代 随着数据爆发式增长,像ERP.OA.CRM等系统在企业运用的越来越多.这些系统的使用必然会产生很多的数据,比如在产品加工设计测试维护过程中产 ...

  2. 基于位图(Bitmap、BitmapData)的图片处理方法(C#)

    目前操作位图的主流方法有三种: 1.基于Bitmap像素的处理方法,以GetPixel()和SetPixel()方法为主.方法调用简单,但是效率偏低. 2.基于内存的像素操作方法,以System.Ru ...

  3. ArcGIS Engine开发之地图导出

    关于地图导出的方法有很多,但是核心技术就那么一点.下面是从项目实战中总结的一部分地图导出的方法:(以全域导出和区域导出为例) 1.由于地图导出用到的函数和方法容易重复,增加了工作量故首先将其进行封装成 ...

  4. [转]通过Visual Studio为Linux编写C++代码

    Build 2016大会上Microsoft首次公布的Visual Studio 2015扩展提供了在VS2015中编写C++代码,随后通过Linux/UNIX计算机进行编译和执行的能力.这种想法非常 ...

  5. 【代码笔记】iOS-验证手机号,邮箱,车牌号是否合法

    一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...

  6. 微信Swift完整项目应用源码

    TSWeChat 中文说明 A WeChat alternative, written in Swift. 运行环境 Cocoapods 0.39.0 + iOS 8.0+ / Mac OS X 10 ...

  7. showSetPwdDialog--自定义对话框

    样式: 布局: layout dialog_set_pwd.xml <?xml version="1.0" encoding="utf-8"?> & ...

  8. 【代码笔记】iOS-获得富文本设置以后的文字高度

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...

  9. JavaScript(八)——复习一(重要内容基本包含在内)

    一.常用对话框 1.alert(""):警告对话框,作用是弹出一个警告对话框 2.confirm(""):确定对话框,弹出一个带确定和取消按钮的对话框——确定返 ...

  10. JAVA NIO Buffer

    所谓的输入,输出,就是把数据移除或移入缓冲区.   硬件不能直接访问用户控件(JVM). 基于存储的硬件设备操控的是固定大小的数据块儿,用户请求的是任意大小的或非对齐的数据块儿.   虚拟内存:使用虚 ...