Doxygen是具有很多功能的文檔生成系統(tǒng),如:
OpenCV庫的現(xiàn)有文檔已經(jīng)轉換為doxygen格式。
請查看官方下載和安裝頁面。一些linux發(fā)行版也可以提供doxygen軟件包。
cmake ../opencv
或者如果你也得到contrib來源:cmake -DOPENCV_EXTRA_MODULES_PATH = .. / opencv_contrib / modules ../opencv
make check_pylint
從許多不同的地方收集整個文件:
以下方案代表了opencv存儲庫的常見文檔:
<opencv>
├── doc - doxygen config files, root page (root.markdown.in), BibTeX file (opencv.bib)
│ ├── tutorials - tutorials hierarchy (pages and images)
│ └── py_tutorials - python tutorials hierarchy (pages and images)
├── modules
│ └── <modulename>
│ ├── doc - documentation pages and images for module
│ └── include - code documentation in header files
└── samples - place for all code examples
├── cpp
│ └── tutorial_code - place for tutorial code examples
└── ...
自3.0版以來,所有新模塊都放在opencv_contrib倉庫中,布局略有不同:
<opencv_contrib>
└── modules
└── <modulename>
├── doc - documentation pages and images, BibTeX file (<modulename>.bib)
├── include - code documentation in header files
├── samples - place for code examples for documentation and tutorials
└── tutorials - tutorial pages and images
要為函數(shù),類和其他實體添加文檔,只需在其定義之前插入特殊注釋。喜歡這個:
/** @brief Calculates the exponent of every array element.
The function exp calculates the exponent of every element of the input array:
\f[ \texttt{dst} [I] = e^{ src(I) } \f]
The maximum relative error is about 7e-6 for single-precision input and less than 1e-10 for
double-precision input. Currently, the function converts denormalized values to zeros on output.
Special values (NaN, Inf) are not handled.
@param src input array.
@param dst output array of the same size and type as src.
@sa log , cartToPolar , polarToCart , phase , pow , sqrt , magnitude
*/
CV_EXPORTS_W void exp(InputArray src, OutputArray dst);
在這里你可以看到:
/ ** ... * /
brief
表示以下段落是簡要說明@brief
\ f [... \ f]
param
表示以下單詞是參數(shù)的名稱,下面的文本是參數(shù)的描述; 所有參數(shù)都放在列表中@param
sa
啟動“另請參見”段落,其中包含對某些類,方法,頁面或URL的引用。@sa
生成的參考項目如下所示:
“更多...”鏈接將帶您進入功能文檔:
功能文檔
不同的注釋語法可用于單行簡短注釋:
//! type of line
enum LineTypes {
FILLED = -1,
LINE_4 = 4, //!< 4-connected line
LINE_8 = 8, //!< 8-connected line
LINE_AA = 16 //!< antialiased line
};
這里:
//!
// <!
生成的文檔塊如下所示:
Enumeration documentation
Doxygen命令以@或\符號開始:
@brief ... or \brief ...
Doxygen評論可以有不同的形式:
C-style: /** ... */ or /*! ... */ C++-style //! ... or /// ... Lines can start with '*': /** * ... * ... */ Can be placed after documented entity: //!< ... /**< ... */
要結束段落,請插入空行或任何命令開始新段落:
@brief brief description paragraph brief continues new paragraph @note new note paragraph note paragraph continues another paragraph paragraph continues
頁面,錨點,組和其他命名實體在整個項目中應該有唯一的名稱。將此標識符與模塊名稱進行前綴是一個好主意:
@page core_explanation_1 Usage explanation @defgroup imgproc_transform Image transformations @anchor mymodule_interesting_note
Doxygen支持使用一些擴展名的Markdown格式。下面介紹簡短的語法參考,詳細信息請訪問Markdown支持。
Bulleted: - item1 - item2 Numbered: 1. item1 2. item2 or -# item1 -# item2
_italic_ __bold__ use html in complex cases: <em>"path/to/file"</em>
explicit link: [OpenCV main site](http://opencv.org) automatic links: <http://opencv.org> or even: http://opencv.org
![image caption](image path)
Level1 ====== Level2 ------ ### Level3 #### Level4
您可以為任何標題分配唯一的標識符,以便從其他地方引用它。
Header {#some_unique_identifier} ------ ... See @ref some_unique_identifier for details
每個頁面應該在頁面標題和標識符的開頭有額外的Level1標題:
Writing documentation for OpenCV {#tutorial_documentation} ================================
來自doxygen文檔的示例:
First Header | Second Header ------------- | ------------- Content Cell | Content Cell Content Cell | Content Cell
最常用的doxygen命令在這里用簡短的例子進行描述。有關可用命令和詳細描述的完整列表,請訪問命令參考。
Explicit reference: @ref MyClass Explicit named reference: @ref example_page "Example page" Implicit reference: cv::abc::MyClass1 or just MyClass1 Disable implicit reference: %MyClass1
內(nèi)聯(lián)公式有f$命令:
\f$ ... \f$
塊公式 - 與f[
和f]
命令:
\f[ ... \f]
要將文本標記為文檔中的代碼,使用代碼和結尾碼命令。
@code float val = img.at<float>(borderInterpolate(100, img.rows, cv::BORDER_REFLECT_101), borderInterpolate(-5, img.cols, cv::BORDER_WRAP)); @endcode
語法將根據(jù)當前解析的文件類型(C ++為.hpp,C為.h)突出顯示,也可以手動指定大括號:
@code{.xml}
要將整個示例文件包含在文檔中,請使用include和includelineno命令。該文件在通用樣本位置進行搜索,因此您可以僅指定其名稱或路徑的一小部分。該includelineno版本也顯示行數(shù),但阻止的復制粘貼,因為行號都包括在內(nèi)。
@include samples / cpp / test.cpp
如果要包含現(xiàn)有示例文件的一些部分 - 請使用snippet命令。
首先,使用特殊的doxygen注釋標記文件的必需部分:
//![var_init] int a = 0; //![var_init]
然后將此片段包含在文檔中:
@snippet samples / cpp / test.cpp var_init
切換按鈕用于顯示所選配置(例如編程語言,操作系統(tǒng),IDE)。
要使用文檔中的按鈕,使用add_toggle和end_toggle命令。
命令add_toggle可以
例:
@add_toggle{Button Name} text / code / doxygen commands @end_toggle
例如使用帶有文字和代碼段的切換按鈕:
### Buttons Example @add_toggle_cpp Text for C++ button @snippet samples/cpp/tutorial_code/introduction/documentation/documentation.cpp hello_world @end_toggle @add_toggle_java Text for Java button @snippet samples/java/tutorial_code/introduction/documentation/Documentation.java hello_world @end_toggle @add_toggle_python Text for Python button @snippet samples/python/tutorial_code/introduction/documentation/documentation.py hello_world @end_toggle
結果如下所示:
C ++文本按鈕
std :: cout << “Hello World!” ;
文本為Java按鈕
System.out.println(“Hello World!”);
Python的文本按鈕
print('Hello world!')
您可以看到,按鈕將在上一個標題下自動添加。
所有代碼實體都應該被放入代表OpenCV模塊的命名組及其內(nèi)部結構中,因此每個模塊都應該與一個具有相同名稱的組相關聯(lián)。定義組和子組的好地方是此模塊的主要頭文件:“<module> / include / opencv2 / <module> .hpp”。
/**
@defgroup mymodule My great module
optional description
@{
@defgroup mymodule_basic Basic operations
optional description
@defgroup mymodule_experimental Experimental operations
optional description
@}
*/
要將類和函數(shù)放入特定的組中,只需ingroup
在其文檔中添加命令,或者使用addtogroup
命令包裝整個代碼塊:
/** @brief Example function @ingroup mymodule */ or /** @addtogroup mymodule_experimental @{ */ ... several functions, classes or enumerations here /** @} */
使用cite命令插入“ 參考書目”頁面中列出的相關出版物的引用。
首先,將出版物BibTeX記錄添加到“<opencv> /doc/opencv.bib”或“<opencv_contrib> / modules / <module> / doc / <module> .bib”文件中:
@ARTICLE{Bradski98, author = {Bradski, Gary R}, title = {Computer vision face tracking for use in a perceptual user interface}, year = {1998}, publisher = {Citeseer} }
然后參考cite命令:
@cite Bradski98
本文中描述的步驟可在文檔編寫過程中用作檢查表。沒有必要按照同樣的順序做事情,但有些步驟真的取決于以前的事情。當然,這些步驟只是基本的指導方針,總是有創(chuàng)意的地方。
@prev_tutorial{identifier} @next_tutorial{identifier}
@prev_tutorial {} #tutorial_documentation
@prev_tutorial {} tutorial_documentation
@youtube {} ViPN810E0SU
- @subpage tutorial_windows_visual_studio_image_watch
_Languages:_ C++, Java, Python
_Compatibility:_ \>= OpenCV 2.4
_Author:_ Wolf Kienzle
You will learn how to visualize OpenCV matrices and images within Visual Studio 2012.
更多建議: