编译OpenCV文档

概述

使用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

时间: 2024-09-20 08:09:00

编译OpenCV文档的相关文章

C#反编译微软MSDN2003的帮助文档,并将反编译结果保存到一个SQLSERVER数据库中

server|sqlserver|编译|数据|数据库|微软 using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms; namespace MSDNOUT{ /// <summary> /// 反编译微软MSDN2003文档并保存到数据库的程序主窗体 /// </summary> public class dlgM

OpenCV训练分类器制作xml文档

opencv 2.1网上查的另一种资料 训练分类器成功,在此与大家分享.  参考英文资料网址: http://note.sonots.com/SciSoftware/haartraining.html#e134e74e  样本训练要求 1.杯子的背景要统一吗,因为有些背景是白色,有些是淡淡的背景色,还有些深色的背景色 答:背景色要统一 2.整个图的大小就是最外面一个框框起来那么大,    问题是:我需要在原图基础上截图吗,如:只把红框框起来的那部分截出来???  答:不用的 3.那图片是256色

ext编译-如何将ext的网页文档格式编译成CHM格式?

问题描述 如何将ext的网页文档格式编译成CHM格式? 如何将ext的网页文档格式编译成CHM格式?需要用到的工具是什么呢?

vs2008-VS2008 新建一个单文档的工程后,直接编译时提示

问题描述 VS2008 新建一个单文档的工程后,直接编译时提示 解决方案 都提示你这么明显了,**重写虚函数返回类型有差异**,自己检查下呗 解决方案二: 如果是只简单的新建.且未修改,则可能是你的 VS2008 的环境出现了问题. 建议你在其它的电脑上再试试,或者直接使用 VMWare 等等虚拟机试也行.

document-scanner 一个基于 OpenCV 的文档扫描程序(从现在开始直到完成)

document-scanner -- 一个基于 OpenCV 的文档扫描程序 document-scanner 则是一个基于 OpenCV + Python 开发的文档扫描程序,强烈建议阅读我的博客以便更好理解本文: http://vipulsharma20.blogspot.on 真诚的感谢下面这篇文字以及作者:  http://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-min

《C程序设计新思维》一1.7 通过本地文档来编译C程序

1.7 通过本地文档来编译C程序 到此,你应该已经看出编译过程的套路了. 1. 设定一个表述编译器选项的变量. 2. 设定一个表述连接器选项的变量,包括为你用的所有库配置的-l选项. 3. 用make命令或者你的IDE的操作来把这些变量转换为完整的编译和连接命令. 本章的余下部分将把以上步骤做最后一次,并采取一种非常简短的设置:仅仅用shell.如果你思维敏捷,可以通过摘录一些语句段落到解析器上来学习脚本,你也将可以同样地把C代码贴在你的命令行上.**1.7.1 在命令行里包含头文件**gcc和

按文档上集成SDK,最后一编译,报错

问题描述 解决方案 少了下面的库,文档会及时更新.解决方案二:ok,已解决

Android源码研究的准备工作 -- 下载android源码到Ubuntu上(亲自调试,不能过分迷信GOOGLE文档)

参考资料: http://source.android.com/source/downloading.html#initializing-a-repo-client http://blog.csdn.net/xjanker2/article/details/4497013 http://www.cnblogs.com/nikyxxx/archive/2011/11/11/2246076.html http://www.cnblogs.com/yayagepei/articles/2753253.

gradle使用文档

1     基本介绍 1.1 前言 gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具.它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML. gradle能够完成构建.测试.发布和其他诸如软件打包.生成注释文档等等功能. 其特点包括: l  使用简单 l  支持多方式依赖管理 l  与ant.maven和ivy有良好的相容,支持轻松地从其他构建方式迁移到gradle上 l  支持局部构建 l  支持多工程的构建 l  免费开源