为 OpenCV 编写文档(二)

news2024/11/16 19:34:54

常用命令

这里通过简短的示例描述了最常用的 doxygen 命令。有关可用命令的完整列表和详细说明,请访问命令参考。

基本命令

  • brief - 带有简要实体描述的段落
  • param - 函数参数的描述。

    多个相邻语句合并到一个列表中。如果在实际函数签名中找不到具有此名称的参数 - 将产生 doxygen 警告。函数可以没有记录的参数,也可以记录所有参数。

  • sa - “另请参阅”段落,包含对类、函数、页面或 URL 的引用
  • 注意 - 视觉上突出显示的“注意”段落。多个相邻的语句合并到一个块中。
  • return, returns - 描述函数的返回值
  • overload - 在函数描述中添加固定文本:“这是一个重载成员函数,为方便起见而提供。它与上述函数的区别仅在于它接受的参数。
  • 锚点 - 放置不可见的命名锚点,可以通过命令引用。它只能在页面中使用。ref
  • ref - 对命名部分、页面或锚点的显式引用。

    如果找不到此类实体,将生成 doxygen 警告。此命令有一个可选参数 - 链接文本。

    Doxygen 还会自动生成一些链接:如果文本包含可以在文档实体中找到的单词 - 将生成引用。可以通过在单词前面加上符号来禁用此功能。%

    <span style="background-color:#fbfcfd">Explicit reference: @ref MyClass
    Explicit named reference: @ref example_page "Example page"
    Implicit reference: cv::abc::MyClass1 or just MyClass1
    Disable implicit reference: %MyClass1</span>
  • F - 公式

    内联公式以命令为界:f$

    <span style="background-color:#fbfcfd">\f$ ... \f$</span>

    块公式 - 使用 和 命令:f[f]

    <span style="background-color:#fbfcfd">\f[ ... \f]</span>

代码包含命令

要在文档中将某些文本标记为代码,请使用 code 和 endcode 命令。

<span style="background-color:#fbfcfd"><span style="color:#000000">@code
float val = img.at<float>(borderInterpolate(100, img.rows, cv::BORDER_REFLECT_101),
                          borderInterpolate(-5, img.cols, cv::BORDER_WRAP));
@endcode
</span></span>

语法将根据当前解析的文件类型突出显示(C++ 表示 .hpp,C 表示 .h),或者您可以在大括号中手动指定它:

<span style="background-color:#fbfcfd"><span style="color:#000000">@code{.xml}
</span></span>

要将整个示例文件包含在文档中,请使用 include 和 includelineno 命令。在常见示例位置搜索该文件,因此您可以仅指定其名称或路径的短部分。includelineno 版本还显示行号,但由于包含行号,因此可以防止复制粘贴。

<span style="background-color:#fbfcfd"><span style="color:#000000">@include samples/cpp/test.cpp
</span></span>

如果要包含现有示例文件的某些部分,请使用 snippet 命令。

首先,用特殊的 doxygen 注释标记文件的所需部分:

<span style="background-color:#fbfcfd"><span style="color:#000000">//! [var_init]
int a = 0;
//! [var_init]
</span></span>

然后将以下代码片段包含在文档中:

<span style="background-color:#fbfcfd"><span style="color:#000000">@snippet samples/cpp/test.cpp var_init
</span></span>

注意

目前,大多数此类部分包含都是使用 dontinclude 命令进行的,以便与旧的 rST 文档兼容。但是,新创建的示例应包含在 snippet 命令中,因为此方法受已处理文件更改的影响较小。

切换按钮包含命令

切换按钮用于显示所选配置(例如编程语言、操作系统、IDE)。

要使用文档中的按钮,请使用 add_toggle 和 end_toggle 命令。

命令add_toggle可以是

  • 常规:add_toggle{按钮名称}
  • 对于C++:add_toggle_cpp
  • 对于 Java:add_toggle_java
  • 对于 Python:add_toggle_python

例:

<span style="background-color:#fbfcfd"><span style="color:#000000">@add_toggle{Button Name}

  text / code / doxygen commands

@end_toggle
</span></span>

例如,使用带有文本和代码片段的切换按钮:

<span style="background-color:#fbfcfd"><span style="color:#000000">### 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</span></span>

结果如下所示:

按钮示例

C++爪哇岛蟒

“C++ 文本”按钮

std::cout << “Hello World!”;

如您所见,按钮会自动添加到上一个标题下。

分组命令

所有代码实体都应放入表示 OpenCV 模块及其内部结构的命名组中,因此每个模块都应与具有相同名称的组相关联。定义组和子组的好地方是此模块的主头文件:“<module>/include/opencv2/<module>.hpp”。

注意

Doxygen 组称为“模块”,显示在“模块”页面上。

<span style="background-color:#fbfcfd"><span style="color:#000000">/**
@defgroup mymodule My great module
    optional description
@{
    @defgroup mymodule_basic Basic operations
        optional description
    @defgroup mymodule_experimental Experimental operations
        optional description
@}
*/
</span></span>

要将类和函数放入特定组中,只需将 command 添加到其文档中,或者用 command 包装整个代码块:ingroupaddtogroup

<span style="background-color:#fbfcfd"><span style="color:#000000">/** @brief Example function
    @ingroup mymodule
*/
or
/**
@addtogroup mymodule_experimental
@{
*/
... several functions, classes or enumerations here
/**
@}
*/
</span></span>

出版物参考文献

使用 cite 命令插入对参考书目页面中列出的相关出版物的引用。

首先,将发布 BibTeX 记录添加到“<opencv>/doc/opencv.bib”或“<opencv_contrib>/modules/<module>/doc/<module>.bib”文件中:

<span style="background-color:#fbfcfd"><span style="color:#000000">@ARTICLE{Bradski98,
    author = {Bradski, Gary R},
    title = {Computer vision face tracking for use in a perceptual user interface},
    year = {1998},
    publisher = {Citeseer}
}
</span></span>

注意

尽量不要添加重复的出版物,因为它可能会在以后混淆文档读者和作者。

然后使用 cite 命令进行引用:

<span style="background-color:#fbfcfd"><span style="color:#000000">@cite Bradski98
</span></span>

注意

要获得出版物的 BibTeX 记录,可以使用 Google Scholar。找到出版物后 - 点击其“引用”链接,然后选择“BibTeX”选项:

scholarship_cite_dialog.png

循序渐进

本节中描述的步骤可以用作文档编写过程中的清单。没有必要以相同的顺序做事,但有些步骤确实取决于前面的步骤。当然,这些步骤只是基本的指导方针,总有创造力的地方。

记录函数

  1. 在函数定义之前添加空的 doxygen 注释。
  2. 在开头添加简短的命令,并简要描述函数含义。
  3. 添加函数的详细说明。
  4. 可选:插入公式、图像和示例代码块以说明复杂案例
  5. 可选:使用 param 命令描述每个参数。
  6. 可选:使用 returns 命令描述函数的返回值。
  7. 可选:添加“另请参阅”部分,其中包含指向类似函数或类的链接
  8. 可选:添加参考书目(如果有)。
  9. 测试代码。(Python:“make check_pylint”)
  10. 生成 doxygen 文档并验证结果。

编写教程

  1. 制定要在本教程中说明的想法。
  2. 使示例应用程序足够简单,以便初学者能够理解。要简明扼要,写描述性注释,不要试图避免所有可能的运行时错误或通用。你的目标是说明这个想法。它应该适合一个源文件!

    如果要将此文件中的代码块插入到教程中,请使用特殊的 doxygen 注释标记它们(请参阅此处)。

    如果要使用多种编程语言编写本教程,请使用切换按钮获取替代注释和代码(请参阅此处)。

  3. 收集申请工作的结果。它可以是“之前/之后”的图像,也可以是代表性能的一些数字,甚至是视频。

    将其保存为适当的格式,以便稍后在本教程中使用:

    • 要保存简单的图形状图像,请使用无损“.png”格式。
    • 对于类似照片的图像 - 有损“.jpg”格式。
    • 数字将以纯文本形式插入,可能格式化为表格。
    • 视频应上传到 YouTube。
  4. 在相应的位置(请参阅此处)创建新的教程页面(“.markdown”-file),并将所有图像文件放在其附近(或“images”子目录中)。还要放置您的示例应用程序文件,并确保在 cmake 步骤上启用选项时,它与 OpenCV 库一起编译。-DBUILD_EXAMPLES=ON
  5. 修改您的新页面:
    • 添加页面标题和标识符,通常以“tutorial_”为前缀(请参阅此处)。您可以使用标识符添加指向上一教程和下一教程的链接
      <span style="background-color:#fbfcfd">@prev_tutorial{identifier}
      @next_tutorial{identifier}</span>

      警告

      不要井号标签 (#),例如: 不正确: 正确:
      <span style="background-color:#fbfcfd">@prev_tutorial{#tutorial_documentation} </span>
      <span style="background-color:#fbfcfd">@prev_tutorial{tutorial_documentation} </span>
    • 添加您的想法和教程目标的简要描述。
    • 描述您的程序和/或其有趣的部分。
    • 描述您的结果,插入以前添加的图像或其他结果。

      要添加 youtube 视频,例如 www.youtube.com/watch?v= ViPN810E0SU,请使用 youtube{Video ID}:

      <span style="background-color:#fbfcfd">@youtube{ViPN810E0SU}</span>
    • 添加参考书目(如果有)(见此处)。
  6. 将新创建的教程添加到相应的目录中。只需找到包含所需表的“table_of_content_*.markdown”文件,并在其中放置类似于现有记录的新记录。

    它只是一个带有特殊子页面命令的列表项,它将页面标记为子页面并将其放入现有页面层次结构中。另请注意列表项缩进、段落之间的空行和特殊的斜体标记。

  7. 生成 doxygen 文档并验证结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1397027.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker 使用 vcs/2018 Verdi等 eda 软件

好不容易在ubuntu 安装好了eda软件&#xff0c;转眼就发现了自己的无知。 有博主几年前就搞定了docker上的EDA工具。而且更全&#xff0c;更简单。只恨自己太无知啊。 Synopsys EDA Tools docker image - EDA资源使用讨论 - EETOP 创芯网论坛 (原名&#xff1a;电子顶级开发网…

基于SpringBoot Vue博物馆管理系统

大家好✌&#xff01;我是Dwzun。很高兴你能来阅读我&#xff0c;我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结&#xff0c;还为大家分享优质的实战项目&#xff0c;本人在Java项目开发领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#x…

Python自动化实战之接口请求的实现

在前文说过&#xff0c;如果想要更好的做接口测试&#xff0c;我们要利用自己的代码基础与代码优势&#xff0c;所以该章节不会再介绍商业化的、通用的接口测试工具&#xff0c;重点介绍如何通过 python 编码来实现我们的接口测试以及通过 Pycharm 的实际应用编写一个简单接口测…

HTML动态房屋装饰特效

下面是代码&#xff1a; <!DOCTYPE html> <html lang"en" ><head><meta charset"UTF-8"><title>HTML5房屋装饰工具DEMO演示</title><link rel"stylesheet" href"css/style.css"></he…

Intel Quartus II IP之DP1.4 工程的创建与使用

前述&#xff1a; Win10电脑安装了Quartus 21.4&#xff0c;这可以满足绝大多数工程&#xff0c;特别是对于简单调用fifo/ram等的工程&#xff0c;但是想要学习Quartus的HDMI/DP等高速接口类IP&#xff0c;首先需要创建HDMI/DP IP的设计demo工程&#xff0c;此时还需要安装Ecl…

智能驾驶新浪潮:SSD与UFS存储技术如何破浪前行?- SSD篇

随着汽车行业的不断发展&#xff0c;对存储的需求也在不断的变化中。早期阶段的汽车对存储的需求主要是收音机、播放器、导航仪等&#xff0c;有些还可以支持光盘和U盘的外接播放。中期阶段&#xff0c;也是当前主流的燃油车行车记录、多媒体、车联网的需求&#xff0c;对存储性…

RabbitMQ安装和使用

简介 RabbitMQ是一套开源&#xff08;MPL&#xff09;的消息队列服务软件&#xff0c;是由LShift提供的一个Advanced Message Queuing Protocol (AMQP) 的开源实现&#xff0c;由以高性能、健壮以及可伸缩性出名的Erlang写成。所有主要的编程语言均有与代理接口通讯的客户端库…

国考省考行测:语句排序2刷题

国考省考行测&#xff1a;语句排序2刷题 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能&#xff0c;附带行测和申论&#xff0c;而常规国考省考最重要的还是申论和行测&#xff0c;所以大家认真准备吧&#xff0c;我讲一起屡屡申论和行测的重要知识点…

前端学习路线图和一些经验

关于前端目前个人建议的一个路线,也是自己之前前端学习时候的一个大致路线,给想要学习前端的小白一个参考,以前自己刚开始接触前端的时候就是不知道该按照什么路线学习 eg-前端是做什么的&#xff1f; 就是开发网站,移动端&#xff0c;小程序之类的页面 调调接口完成页面的渲…

设计模式——建造者模式(Builder Pattern)

概述 建造者模式是较为复杂的创建型模式&#xff0c;它将客户端与包含多个组成部分&#xff08;或部件&#xff09;的复杂对象的创建过程分离&#xff0c;客户端无须知道复杂对象的内部组成部分与装配方式&#xff0c;只需要知道所需建造者的类型即可。它关注如何一步一步创建一…

LLaVA-Plus:多模态大模型的新突破

前言 随着AIGC技术的不断进步&#xff0c;各类多模态大模型&#xff08;MLM&#xff09;开始蓬勃发展。在这一领域中&#xff0c;LLaVA-Plus的推出无疑是一次重大突破。作为LLaVA团队的最新工作&#xff0c;LLaVA-Plus不仅继承了LLaVA的优秀特性&#xff0c;还在此基础上进行了…

【方法】如何合并多个PDF文件?

多个PDF文件&#xff0c;想合并成一个文件&#xff0c;要怎么操作呢&#xff1f; 如果PDF文件的数量少&#xff0c;并且页数也不多&#xff0c;可以试试将内容复制黏贴到Word文档&#xff0c;再转为PDF格式&#xff1b;如果文件数量多&#xff0c;页数也多&#xff0c;就不太合…

机器人强化学习-双机械臂

概要 基于 robosuite 库&#xff0c;进行双臂机器人学习训练 环境测试 下面展示下分别控制两个机械手随机运动的画面&#xff1a; 双臂显示场景如下&#xff1a;双臂调用代码如下&#xff1a; import numpy as np import robosuite as suite import robomimic import rob…

【音视频原理】图像相关概念 ③ ( RGB 色彩简介 | RGB 排列 | YUV 色彩简介 | YUV 编码好处 )

文章目录 一、RGB 色彩1、RGB 色彩简介2、RGB 排列 二、YUV 色彩1、YUV 色彩简介2、YUV 编码好处 一、RGB 色彩 1、RGB 色彩简介 RGB 是 计算机 中的 颜色编码方法 , 红 ( R ) / 绿 ( G ) / 蓝 ( B ) 三个颜色通道 可以设置不同的值 , 每个 通道 的 颜色值都可以取值 0 ~ 255 ,…

深度学习模型之yolov8实例分割模型TesorRT部署-python版本

1 模型转换 从github上下载官方yolov8版本&#xff0c;当前使用的版本是2023年9月份更新的版本&#xff0c;作者一直在更新。官网地址 2 加载模型 模型的训练和测试在官方文档上&#xff0c;有详细的说明&#xff0c;yolov8中文文档这里不做过多说明&#xff0c;v8现在训练是…

Ubuntu系统Git的安装配置及使用笔记(更新中)

Ubuntu下Git的下载及配置 (1)、下载git 打开终端命令窗口,输入&#xff1a;sudo apt-get install git 提示&#xff1a;sudo命令是用来以其他身份来执行命令&#xff0c;预设的身份为root,使用sudo时必须先输入密码 (2)、可以使用命令git --version查看git的版本号 (3)、设置…

ChatGPT给出的前端面试考点(Vue.js)

ChatGPT给出的前端面试考点&#xff08;Vue.js&#xff09; 答案 1. Vue.js是什么&#xff1f;它的主要特点是什么&#xff1f; Vue.js是一个渐进式JavaScript框架&#xff0c;用于构建用户界面。它的主要特点包括&#xff1a; 数据绑定&#xff1a;Vue.js使用双向数据绑定&…

anaconda镜像源,查看镜像,删除镜像,添加镜像

查看镜像配置&#xff1a; conda config --show channel 对应的就是我们的镜像配置 删除旧镜像源 conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ 添加新镜像源&#xff1a; conda config --add channels https://mirrors.tu…

Next.js 开发指​南(GitHub 115k star​)

Next.js 是一个构建于 Node.js 之上的开源 Web 开发框架&#xff0c;它扩展了最新的 React 特性&#xff0c;集成了基于 Rust 的 JavaScript 工具&#xff0c;可以帮助你快速创建全栈 Web 应用 &#xff08;full-stack Web applications&#xff09; 。 对于有一定 React 基础…

TQ8WS-acid,Tide Quencher 8WS-酸,可用来研究荧光物质的激发态

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;Tide Quencher8WS acid&#xff0c;TQ8WS acid&#xff0c;Tide Quencher 8WS 酸 &#xff0c;TQ8WS 酸&#xff0c;Tide Quencher 8WS-酸&#xff0c;TQ8WS-酸 一、基本信息 产品简介&#xff1a;The fluorescence…