当前位置: 首页 > news >正文

为 OpenCV 编写文档(二)

常用命令

这里通过简短的示例描述了最常用的 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_cppText for C++ button@snippet samples/cpp/tutorial_code/introduction/documentation/documentation.cpp hello_world@end_toggle@add_toggle_javaText for Java button@snippet samples/java/tutorial_code/introduction/documentation/Documentation.java  hello_world@end_toggle@add_toggle_pythonText 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 moduleoptional description
@{@defgroup mymodule_basic Basic operationsoptional description@defgroup mymodule_experimental Experimental operationsoptional 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 文档并验证结果。

相关文章:

为 OpenCV 编写文档(二)

常用命令 这里通过简短的示例描述了最常用的 doxygen 命令。有关可用命令的完整列表和详细说明&#xff0c;请访问命令参考。 基本命令 brief - 带有简要实体描述的段落 param - 函数参数的描述。 多个相邻语句合并到一个列表中。如果在实际函数签名中找不到具有此名称的参数…...

HUAWEI华为MateStation S台式机电脑12代PUC-H7621N,H5621N原装出厂Windows11.22H2系统

链接&#xff1a;https://pan.baidu.com/s/1QtjLyGTwMZgYiBO5bUVPYg?pwd8mx0 提取码&#xff1a;8mx0 原厂WIN11系统自带所有驱动、出厂主题壁纸、系统属性专属联机支持标志、Office办公软件、华为电脑管家等预装程序 文件格式&#xff1a;esd/wim/swm 安装方式&#xf…...

机器学习:holdout法(Python)

import pandas as pd import numpy as np from sklearn.preprocessing import LabelEncoder, StandardScaler # 类别标签编码&#xff0c;标准化处理 from sklearn.decomposition import PCA # 主成分分析 import matplotlib.pyplot as plt from sklearn.model_selection impor…...

【GaussDB数据库】序

参考链接1&#xff1a;国产数据库华为高斯数据库&#xff08;GaussDB&#xff09;功能与特点总结 参考链接2&#xff1a;GaussDB(DWS)介绍 GaussDB简介 官方网站&#xff1a;云数据库GaussDB GaussDB是华为自主创新研发的分布式关系型数据库。该产品支持分布式事务&#xff0c;…...

代码随想录算法训练营第三十八天|理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

题目&#xff1a;理论基础 文章链接&#xff1a;代码随想录 视频链接&#xff1a;动态规划理论基础 动态规划五部曲&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 题目&#xff1a;509. 斐…...

大数据开发之Hadoop(优化新特征)

第 1 章&#xff1a;HDFS-故障排除 注意&#xff1a;采用三台服务器即可&#xff0c;恢复到Yarn开始的服务器快照。 1.1 集群安全模块 1、安全模式&#xff1a;文件系统只接收读数据请求&#xff0c;而不接收删除、修改等变更请求 2、进入安全模式场景 1&#xff09;NameNod…...

在使用go语言开发的时候,程序启动后如何获取程序pid

在Go语言中&#xff0c;标准库并没有直接提供获取进程ID&#xff08;PID&#xff09;的函数。通常&#xff0c;你可以使用os包和syscall包来调用底层的操作系统函数来获取PID。 以下是一个获取程序PID的示例代码&#xff1a; package mainimport ("fmt""os&qu…...

HFSS笔记/信号完整性分析(二)——软件仿真设置大全

文章目录 1、多核运算设置1.1 如何设置1.2 如何查看自己电脑的core呢&#xff1f;1.3 查看求解的频点 2、求解模式设置Driven Terminal vs Driven modal 3、Design settings4、自适应网格划分5、更改字体设置 仅做笔记整理与分享。 1、多核运算设置 多核运算只对扫频才有效果&…...

mysql主从报错:Last_IO_Error: Error connecting to source解决方法

目录 报错 处理方法 1.从库停止同步 2.主库修改my.cnf 生效配置default-authentication-pluginmysql_native_password 3.重启服务重新创建复制用户 4.重新同步 5.测试主从 报错 Last_IO_Error: Error connecting to source repl_user192.168.213.15:3306. This was atte…...

AOI与AVI:在视觉检测中的不同点和相似点

AOI&#xff08;关注区域&#xff09;和AVI&#xff08;视觉感兴趣区域&#xff09;是视觉检测中常用的两个概念&#xff0c;主要用于识别和分析图像或视频中的特定区域。虽然这两个概念都涉及到注视行为和注意力分配&#xff0c;但它们在定义和实际应用等方面有一些差异。 AOI…...

Python爬虫 - 网易云音乐下载

爬取网易云音乐实战&#xff0c;仅供学习&#xff0c;不可商用&#xff0c;出现问题&#xff0c;概不负责&#xff01; 分为爬取网易云歌单和排行榜单两部分。 因为网页中&#xff0c;只能显示出歌单的前20首歌曲&#xff0c;所以仅支持下载前20首歌曲&#xff08;非VIP音乐&…...

yarn包管理器在添加、更新、删除模块时,在项目中是如何体现的

技术很久不用&#xff0c;就变得生疏起来。对npm深受其害&#xff0c;决定对yarn再整理一遍。 yarn包管理器 介绍安装yarn帮助信息最常用命令 介绍 yarn官网&#xff1a;https://yarn.bootcss.com&#xff0c;学任何技术的最新知识&#xff0c;都可以通过其对应的网站了解。无…...

React实现Intro效果(基础简单)

下载&#xff1a;利用Intro.js实现简单的新手引导 npm install intro.js --save yarn add intro.js 第一步&#xff1a;在我们需要引导的页面引入 import introJs from intro.js; import intro.js/introjs.css; //css是下载成功后就有的 第二步&#xff1a;在组件页面 c…...

HBuilderx发布苹果的包需要注意什么

在HBuilderX中发布苹果的包&#xff0c;需要注意以下几点&#xff1a; 开发者账号注册&#xff1a;在发布应用到App Store之前&#xff0c;需要先注册一个苹果开发者账号。注册过程较为繁琐&#xff0c;需要提供个人信息并支付年费。应用标识和证书&#xff1a;在发布iOS应用之…...

烟火检测/周界入侵/视频智能识别AI智能分析网关V4如何配置ONVIF摄像机接入

AI边缘计算智能分析网关V4性能高、功耗低、检测速度快&#xff0c;易安装、易维护&#xff0c;硬件内置了近40种AI算法模型&#xff0c;支持对接入的视频图像进行人、车、物、行为等实时检测分析&#xff0c;上报识别结果&#xff0c;并能进行语音告警播放。算法可按需组合、按…...

C++ 内联函数

C 内联函数是通常与类一起使用。如果一个函数是内联的&#xff0c;那么在编译时&#xff0c;编译器会把该函数的代码副本放置在每个调用该函数的地方。 对内联函数进行任何修改&#xff0c;都需要重新编译函数的所有客户端&#xff0c;因为编译器需要重新更换一次所有的代码&a…...

微信小程序带参数分享界面、打开界面加载分享内容

分享功能是微信小程序常用功能之一&#xff0c;带参分享和加载可以让分享对象打开界面时看到和分享内容。 带参分享 用户点击微信小程序右上角自带分享&#xff0c;或者点击自定义分享按钮进行分享时&#xff0c;可在onShareAppMessage函数定义分享行为。 分享界面路径可带参…...

中小企业选择CRM系统有哪些注意事项?如何高效实施CRM

阅读本文&#xff0c;你将了解&#xff1a;一、中小型企业对CRM系统的主要需求&#xff1b;二、CRM系统实施策略和优秀实践。 在快速变化的商业环境中&#xff0c;中小型企业面临着独特的挑战&#xff1a;如何在有限的资源下高效地管理客户关系、提升销售效率&#xff0c;保持…...

轮胎侧偏刚度线性插值方法

一、trucksim取数据 步骤一 步骤二 二、数据导入到matlab中 利用simulink的look up table模块 1是侧偏角&#xff1b;2是垂直载荷&#xff1b;输出是侧向力。 侧向力除以侧偏角就是实时的侧偏刚度。...

前端JS代码中Object类型数据的相关知识

获取Object类型数据的方式有两种&#xff1a; 方括号获取&#xff1a;Object["arg1"]点获取&#xff1a;Object.arg1 前端遍历Object类型数据的方式 遍历JavaScript中的对象有几种方法&#xff0c;包括使用for…in循环、Object.keys()方法、Object.values()方法和…...

113. 强制使用 Letsencrypt ECDSA 和 DNS-01 续期挑战的默认 HTTPS Rancher 证书

Environment 环境 2.9 Situation 地理位置A self-signed default Rancher certificate is currently used and will be migrated to a stronger Let’s Encrypt ECDSA-386 certificate using the DNS-01 renewal challenge. 目前使用自签名默认的牧场证书&#xff0c;并将通过…...

BilibiliDown:基于Java的B站视频下载技术方案与实现解析

BilibiliDown&#xff1a;基于Java的B站视频下载技术方案与实现解析 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors…...

Tomcat安全防护指南:如何用TomcatScanPro检测CVE-2017-12615和AJP文件包含漏洞

Tomcat安全防护实战&#xff1a;从漏洞检测到加固的全链路解决方案 在企业级Java应用部署中&#xff0c;Tomcat作为最流行的Web服务器之一&#xff0c;其安全性直接关系到业务系统的稳定运行。本文将深入剖析两个高危漏洞&#xff08;CVE-2017-12615和AJP文件包含&#xff09;的…...

SpringBoot 整合 MyBatis 完整实战

SpringBoot MyBatis 可以说是国内后端开发最经典、最常用的组合了。本篇文章就来介绍一下SpringBoot如何整合MyBatis&#xff0c;实现数据表的增删改查。一、引言SpringBoot 整合 MyBatis 是国内 Java 后端最主流的持久层方案&#xff1a;• 灵活可控&#xff0c;SQL 可优化、…...

硬件工程师必看:从PCIe到车载以太网,手把手教你搞定SerDes信号完整性设计(附仿真避坑指南)

硬件工程师实战指南&#xff1a;SerDes信号完整性设计的黄金法则与仿真避坑 在当今高速数字电路设计中&#xff0c;SerDes技术已经成为连接芯片与系统的关键桥梁。无论是数据中心服务器中的PCIe 5.0接口&#xff0c;还是智能驾驶系统中的车载以太网&#xff0c;信号完整性问题都…...

VideoAgentTrek-ScreenFilter模型压缩与量化教程:在边缘设备上实现轻量部署

VideoAgentTrek-ScreenFilter模型压缩与量化教程&#xff1a;在边缘设备上实现轻量部署 想让一个原本需要强大GPU才能流畅运行的视频分析模型&#xff0c;在树莓派或者Jetson Nano这类小巧的边缘设备上也能跑起来吗&#xff1f;这听起来像是个不可能的任务&#xff0c;但通过模…...

中小企业AI落地:Qwen3-4B-Instruct-2507轻量部署实战

中小企业AI落地&#xff1a;Qwen3-4B-Instruct-2507轻量部署实战 中小企业想用上大模型&#xff0c;常被几个现实问题卡住&#xff1a;显存不够、部署太重、运维不会、成本太高。Qwen3-4B-Instruct-2507这个模型&#xff0c;就是为这类场景量身打磨的——它不追求参数堆砌&…...

Ostrakon-VL像素终端实操:自定义扫描任务清单配置方法

Ostrakon-VL像素终端实操&#xff1a;自定义扫描任务清单配置方法 1. 像素特工终端介绍 Ostrakon-VL像素终端是一款专为零售与餐饮场景设计的智能扫描工具&#xff0c;采用独特的8-bit像素风格界面&#xff0c;将复杂的图像识别任务转化为直观有趣的"特工任务"。基…...

从一次时序违例修复说起:实战中set_multicycle_path与时钟使能(CE)的配合使用指南

从一次时序违例修复说起&#xff1a;实战中set_multicycle_path与时钟使能(CE)的配合使用指南 在FPGA设计流程中&#xff0c;时序收敛往往是最后阶段最令人头疼的问题之一。特别是当设计中使用时钟使能(Clock Enable, CE)信号进行功耗优化时&#xff0c;默认的单周期时序约束可…...

Wan2.2-I2V-A14B Java开发集成指南:SpringBoot后端服务调用

Wan2.2-I2V-A14B Java开发集成指南&#xff1a;SpringBoot后端服务调用 1. 引言 如果你是一名Java后端开发者&#xff0c;正考虑将AI视频生成能力集成到现有系统中&#xff0c;这篇教程就是为你准备的。我们将手把手教你如何在SpringBoot项目中调用私有化部署的Wan2.2-I2V-A1…...