表格线识别通用库文档
载入中...
搜索中...
未找到
cm::Debug类 参考

调试类 更多...

#include <debug.hpp>

cm::Debug 的协作图:

struct  ConfigLines
 带有打印配置参数的线列表 更多...
 
struct  ConfigRects
 带有打印配置参数的矩形列表 更多...
 

Public 成员函数

 Debug (const std::string &output_image_path="", const std::string &image_name="debug", bool is_enable_image_output=true)
 调试类的带参构造函数
 
 ~Debug ()
 调试类的析构函数
 
DebugSetImageOutputStatus (bool is_enable_image_output)
 设置图片输出状态
 
const DebugCounterStart (const std::string &counter_name="__INITIAL__", size_t start=0, size_t step=1) const
 图片输出计数器开始计数
 
const DebugCounterEnd () const
 图片输出计数器结束计数
 
const DebugNamedStart (const std::string &image_name_suffix) const
 设置默认的输出图片名后缀
 
const DebugNamedEnd () const
 撤销默认的输出图片名后缀的设置
 
const DebugOutputImage (const std::string &image_name_suffix, const cv::Mat &image, const std::vector< ConfigLines > &lines_list={}, const std::vector< ConfigRects > &rects_list={}, bool is_print_image_path=false) const
 输出图片
 
const DebugOutputImage (const cv::Mat &image, const std::vector< ConfigLines > &lines_list={}, const std::vector< ConfigRects > &rects_list={}, bool is_print_image_path=false) const
 输出图片
 
const DebugOutputHistogram (const std::string &image_name_suffix, const cv::Mat &histogram, int item_width=4, bool is_print_image_path=false) const
 输出直方图
 
const DebugOutputHistogram (const cv::Mat &histogram, int item_width=4, bool is_print_image_path=false) const
 输出直方图
 

Public 属性

std::string output_image_path
 输出图片路径
 
std::string image_name
 图片名
 

静态 Public 属性

static Printer Print
 简单打印器
 
static ComplexPrinter CPrint
 复杂打印器
 

详细描述

调试类

该调试类提供了一系列用于调试和输出调试信息的方法和工具。其中包括输出图像和直方图、配置线列表和矩形列表输出等功能。通过 Debug 类提供的各种方法,开发者可以更便捷地进行程序调试和结果展示。

作者
dreamy-xay
日期
2023-12-06

在文件 debug.hpp37 行定义.

构造及析构函数说明

◆ Debug()

cm::Debug::Debug ( const std::string & output_image_path = "",
const std::string & image_name = "debug",
bool is_enable_image_output = true )
inline

调试类的带参构造函数

初始化调试类,设置输出图片路径、原始图片文件名,并初始化作用域计数器和输出图片名称后缀。

参数
output_image_path输出图片路径
image_name原始图片文件名
is_enable_image_output是否启用图片输出功能,启用后 cm::Debug::OutputImagecm::Debug::OutputHistogram 函数才能发挥作用
作者
dreamy-xay
日期
2023-12-07

在文件 debug.hpp302 行定义.

◆ ~Debug()

cm::Debug::~Debug ( )
inline

调试类的析构函数

调试类的析构函数,用于释放分配的内存空间。

作者
dreamy-xay
日期
2023-12-07

在文件 debug.hpp311 行定义.

成员函数说明

◆ CounterEnd()

const Debug & cm::Debug::CounterEnd ( ) const
inline

图片输出计数器结束计数

结束当前图片输出计数器的计数工作,自动切回到上一个计数器。

返回
类自身引用,方便链式调用
注解
每个计数器都处于一个新的作用域。 CounterEnd 函数的原理是关闭 CounterStart 打开的新的作用域,切换回上一个作用域,具体实现原理请查看 作用域类
注意
  • 当计数器名称为 "__INITIAL__" 时,表示关闭计数器。即,当切换回上一个作用域时,若作用域名称为 "__INITIAL__",则表示关闭计数器。
  • 若当前处于初始作用域(作用域名称为 "__INITIAL__"),再次执行 CounterEnd 时,不会再切换回上一个作用域,因为没有上一个作用域可切换至。

示例
// 全局调试器
const cm::Debug debug("/path/to", "test_image");
// 根据区域处理图片
cv::Mat ModifyImage(const cv::Mat image, cm::Rect area) {
...
}
// 测试函数1
void Test1(cm::Rect area, cv::Mat image) {
area.Translate(9, 10);
// 开启一个新的输出图片计数器,并输出 Test1 函数第一步操作执行结果
debug.CounterStart("test1").OutputImage("Test1", ModifyImage(image, area));
area.Scale(0.9);
// 输出 Test1 函数第二步操作执行结果,并切回到上一个计数器
debug.OutputImage("Test1", ModifyImage(image, area)).CounterEnd();
}
void Test2(cv::Mat image, const std::vectro<double>& scale_list) {
cm::Rect area(67, 23, 281, 382);
for(int i = 0; i < scale_list.size(); ++i) {
cm::Rect new_area(area);
new_area.Scale(scale_list[i]);
// 开启一个新的输出图片计数器,并输出 Test2 函数第一步操作执行结果
debug.CounterStart("test2").OutputImage("Test2", ModifyImage(image, new_area));
Test1(new_area, image);
// 输出 Test2 函数第二步操作执行结果,并关闭计数器
debug.OutputImage("Test2", ModifyImage(image, new_area)).CounterEnd();
}
}
// 假设输入的 scale_list = {1.2, 1.5},按照执行顺序,输出的图片目录如下:
// /path/to/test_image_Test2_0.jpg
// /path/to/test_image_Test1_0.jpg
// /path/to/test_image_Test1_1.jpg
// /path/to/test_image_Test2_1.jpg
// /path/to/test_image_Test2_2.jpg
// /path/to/test_image_Test1_2.jpg
// /path/to/test_image_Test1_3.jpg
// /path/to/test_image_Test2_3.jpg
调试类
Definition debug.hpp:37
点类
Definition point.hpp:52
Point< T > & Scale(double factor, bool round=false)
点的坐标缩放操作
Definition point.hpp:447
Point< T > & Translate(T dx, T dy)
点的坐标平移操作
Definition point.hpp:427
矩形类
Definition rect.hpp:31
作者
dreamy-xay
日期
2023-12-07

在文件 debug.hpp425 行定义.

◆ CounterStart()

const Debug & cm::Debug::CounterStart ( const std::string & counter_name = "__INITIAL__",
size_t start = 0,
size_t step = 1 ) const
inline

图片输出计数器开始计数

根据给定的计数器名称、起始值和步长,启动对应的计数器,用于输出的图片名后加计数器的计数。当计数器名称为 "__INITIAL__" 时,表示关闭计数器。

参数
counter_name计数器名称 默认为 "__INITIAL__",即关闭计数器
start计数器开始值 默认为 0
step计数器自增步长 默认为 1
返回
类自身引用,方便链式调用
注解
  • 每个计数器都处于一个新的作用域。 CounterStart 函数的原理是打开一个新的作用域,在新作用域里创建一个计数器,每个作用域之间的计数器相互独立,互不影响。
  • 输出的图片名将会在后面附加上计数器的计数,具体是配合 CounterEnd 方法使用。详细用法请查看 示例
注意
  • 在使用时,请确保每个计数器的名称不同。当计数器名称为 "__INITIAL__" 时,表示关闭计数器。
  • 同名计数器只会被创建一次,以第一次创建的计数器为准。后续的同名计数器将继承第一次创建的计数器数据,并在此基础上进行计算。
作者
dreamy-xay
日期
2023-12-07

在文件 debug.hpp348 行定义.

◆ NamedEnd()

const Debug & cm::Debug::NamedEnd ( ) const
inline

撤销默认的输出图片名后缀的设置

该函数用于撤销设置的默认输出图片名后缀,自动切回到上一个已设置的默认的输出图片名后缀。

返回
类自身引用,方便链式调用
注解
每次设置的默认输出图片名后缀都处于一个新的作用域。 NamedEnd 函数的原理是关闭 NamedStart 打开的新的作用域,切换回上一个作用域,具体实现原理请查看 作用域类
注意
  • 当输出图片名后缀名称为 "__INITIAL__" 时,表示没有图片名后缀名称,默认为 "__INITIAL__"。
  • 若当前处于初始作用域(作用域名称为 "__INITIAL__"),再次执行 NamedEnd 时,不会再切换回上一个作用域,因为没有上一个作用域可切换至。

示例
该示例是对 计数器示例 的改进版本,其中使用了 NamedStartNamedEnd 函数,以减少代码量。
// 全局调试器
const cm::Debug debug("/path/to", "test_image");
// 根据区域处理图片
cv::Mat ModifyImage(const cv::Mat image, cm::Rect area) {
...
}
// 测试函数1
void Test1(cm::Rect area, cv::Mat image) {
area.Translate(9, 10);
// 开启一个新的输出图片计数器,同时设置默认的输出图片名后缀,并输出 Test1 函数第一步操作执行结果
debug.CounterStart("test1").NamedStart("Test1").OutputImage(ModifyImage(image, area));
area.Scale(0.9);
// 输出 Test1 函数第二步操作执行结果,并切回到上一个计数器,同时自动切回到上一个已设置的默认的输出图片名后缀
debug.OutputImage(ModifyImage(image, area)).CounterEnd().NamedEnd();
}
void Test2(cv::Mat image, const std::vectro<double>& scale_list) {
cm::Rect area(67, 23, 281, 382);
for(int i = 0; i < scale_list.size(); ++i) {
cm::Rect new_area(area);
new_area.Scale(scale_list[i]);
// 开启一个新的输出图片计数器,同时设置默认的输出图片名后缀,并输出 Test2 函数第一步操作执行结果
debug.CounterStart("test2").NamedStart("Test2").OutputImage(ModifyImage(image, new_area));
Test1(new_area, image);
// 输出 Test2 函数第二步操作执行结果,并关闭计数器,同时撤销默认的输出图片名后缀的设置
debug.OutputImage(ModifyImage(image, new_area)).CounterEnd().NamedEnd();
}
}
// 假设输入的 scale_list = {1.2, 1.5},按照执行顺序,输出的图片目录如下:
// /path/to/test_image_Test2_0.jpg
// /path/to/test_image_Test1_0.jpg
// /path/to/test_image_Test1_1.jpg
// /path/to/test_image_Test2_1.jpg
// /path/to/test_image_Test2_2.jpg
// /path/to/test_image_Test1_2.jpg
// /path/to/test_image_Test1_3.jpg
// /path/to/test_image_Test2_3.jpg
作者
dreamy-xay
日期
2023-12-07

在文件 debug.hpp530 行定义.

◆ NamedStart()

const Debug & cm::Debug::NamedStart ( const std::string & image_name_suffix) const
inline

设置默认的输出图片名后缀

该函数用于设置默认的输出图片名后缀,若输出图片函数未指定图片名,则会使用此默认图片名后缀。

参数
image_name_suffix图片名后缀(如:"binary","lines")
返回
类自身引用,方便链式调用
注解
  • 每次设置的默认输出图片名后缀都处于一个新的作用域。
  • 输出的图片名将会在后面附加上输出图片名后缀,具体是配合 NamedEnd 方法使用。详细用法请查看 示例
  • NamedStart 通常与 图片计数 一起使用。
注意
当输出图片名后缀名称为 "__INITIAL__" 时,表示没有图片名后缀名称,默认为 "__INITIAL__"。
作者
dreamy-xay
日期
2023-12-07

在文件 debug.hpp449 行定义.

◆ OutputHistogram() [1/2]

const Debug & cm::Debug::OutputHistogram ( const cv::Mat & histogram,
int item_width = 4,
bool is_print_image_path = false ) const
inline

输出直方图

该函数用于输出包含直方图的图像,并可选择是否打印输出的图像路径。

注意
请在调用 设置默认的输出图片名后缀 后进行操作,否则会导致错误。
参数
histogram直方图图片对象
item_width直方图输出时每一项的宽度 默认为 4
is_print_image_path是否控制台打印输出的图片路径
返回
类自身引用,方便链式调用
作者
dreamy-xay
日期
2023-12-07

在文件 debug.hpp683 行定义.

函数调用图:

◆ OutputHistogram() [2/2]

const Debug & cm::Debug::OutputHistogram ( const std::string & image_name_suffix,
const cv::Mat & histogram,
int item_width = 4,
bool is_print_image_path = false ) const
inline

输出直方图

该函数用于输出包含直方图的图像,并可选择是否打印输出的图像路径。

参数
image_name_suffix直方图图片名称后缀(如:"hist")
histogram直方图图片对象
item_width直方图输出时每一项的宽度 默认为 4
is_print_image_path是否控制台打印输出的图片路径
返回
类自身引用,方便链式调用
作者
dreamy-xay
日期
2023-12-07

在文件 debug.hpp622 行定义.

函数调用图:
这是这个函数的调用关系图:

◆ OutputImage() [1/2]

const Debug & cm::Debug::OutputImage ( const cv::Mat & image,
const std::vector< ConfigLines > & lines_list = {},
const std::vector< ConfigRects > & rects_list = {},
bool is_print_image_path = false ) const
inline

输出图片

该函数用于输出带有线条和矩形标记的图像,并可选择是否打印输出的图像路径。

注意
请在调用 设置默认的输出图片名后缀 后进行操作,否则会导致错误。
参数
image图片对象
lines_list线列表 list 默认为 {}
rects_list矩形列表 list 默认为 {}
is_print_image_path是否控制台打印输出的图片路径
返回
类自身引用,方便链式调用
注解
该函数配合 批处理设置图片名后缀图片计数 使用效果更佳。详细内容请查看 示例
作者
dreamy-xay
日期
2023-12-07

在文件 debug.hpp599 行定义.

函数调用图:

◆ OutputImage() [2/2]

const Debug & cm::Debug::OutputImage ( const std::string & image_name_suffix,
const cv::Mat & image,
const std::vector< ConfigLines > & lines_list = {},
const std::vector< ConfigRects > & rects_list = {},
bool is_print_image_path = false ) const
inline

输出图片

该函数用于输出带有线条和矩形标记的图像,并可选择是否打印输出的图像路径。

参数
image_name_suffix图片名称后缀(如:"binary", "lines")
image图片对象
lines_list线列表 list 默认为 {}
rects_list矩形列表 list 默认为 {}
is_print_image_path是否控制台打印输出的图片路径
返回
类自身引用,方便链式调用
注解
该函数配合 图片计数 使用效果更佳。详细内容请查看 示例
作者
dreamy-xay
日期
2023-12-07

在文件 debug.hpp554 行定义.

函数调用图:
这是这个函数的调用关系图:

◆ SetImageOutputStatus()

Debug & cm::Debug::SetImageOutputStatus ( bool is_enable_image_output)
inline

设置图片输出状态

该函数用于设置 cm::Debug::OutputImagecm::Debug::OutputHistogram 函数是否生效。

参数
is_enable_image_output是否启用图片输出功能,启用后 cm::Debug::OutputImagecm::Debug::OutputHistogram 函数才能发挥作用
返回
类自身引用,方便链式调用
作者
dreamy-xay
日期
2024-05-28

在文件 debug.hpp324 行定义.

类成员变量说明

◆ CPrint

ComplexPrinter cm::Debug::CPrint
static

复杂打印器

复杂打印器 cm::ComplexPrinter 的实例化对象是一个仿函数,可用于打印多参数信息。与简单打印器 cm::Printer 不同的是,复杂打印器还具有打印参数名的功能。

前置条件
要使用打印器进行打印,必须重载输出流运算符,或者系统库已经实现了该值类型的输出流运算符重载,例如:int、double、float等基本类型。
示例
// 声明打印变量
int a = 5;
double avg = 1.0;
cm::Point2i pt = {12, 637}; // cm::Point 重载了输出流运算符
// 直接打印
cm::Debug::CPrint("variable a, average, point", a, avg, pt);
// 输出结果如下:
// <variable a>: 5
// <average>: 1.0
// <point>: {x: 12, y: 637}
// 通过 cm::Debug 的实例化对象打印
debug.Print(a, avg, pt);
static ComplexPrinter CPrint
复杂打印器
Definition debug.hpp:62
作者
dreamy-xay
日期
2024-01-23

在文件 debug.hpp62 行定义.

◆ image_name

std::string cm::Debug::image_name

图片名

在文件 debug.hpp59 行定义.

◆ output_image_path

std::string cm::Debug::output_image_path

输出图片路径

在文件 debug.hpp57 行定义.

◆ Print

Printer cm::Debug::Print
static

简单打印器

简单打印器 cm::Printer 的实例化对象是一个仿函数,可用于打印多参数信息。

前置条件
要使用打印器进行打印,必须重载输出流运算符,或者系统库已经实现了该值类型的输出流运算符重载,例如:int、double、float等基本类型。
示例
// 声明打印变量
int a = 5;
double avg = 1.0;
cm::Point2i pt = {12, 637}; // cm::Point 重载了输出流运算符
// 直接打印
// 输出结果如下:5 1.0 {x: 12, y: 637}
// 通过 cm::Debug 的实例化对象打印
debug.Print(a, avg, pt);
static Printer Print
简单打印器
Definition debug.hpp:61
作者
dreamy-xay
日期
2024-01-23

在文件 debug.hpp61 行定义.


该类的文档由以下文件生成: