10#ifndef COMMON_DEBUG_HPP
11#define COMMON_DEBUG_HPP
14#include <opencv2/core.hpp>
15#include <opencv2/imgcodecs.hpp>
16#include <opencv2/opencv.hpp>
46 Counter(
size_t init_count = 0,
size_t step = 1);
53 bool is_enable_image_output;
73 const std::vector<Line> lines;
76 cv::Scalar line_color;
78 cv::Scalar text_color;
82 ConfigLines(
const std::vector<Line>& lines,
bool output_seq_num =
true,
bool is_arrowed =
true,
const cv::Scalar& line_color = cv::Scalar(255, 0, 0),
int line_thickness = 1,
const cv::Scalar& text_color = cv::Scalar(0, 0, 255),
int text_thickness = 1);
95 const std::vector<Rect> rects;
97 cv::Scalar rect_color;
99 cv::Scalar text_color;
103 ConfigRects(
const std::vector<Rect>& rects,
bool output_seq_num =
true,
const cv::Scalar& rect_color = cv::Scalar(255, 0, 0),
int rect_thickness = 2,
const cv::Scalar& text_color = cv::Scalar(0, 0, 255),
int text_thickness = 1);
120 const 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;
121 const Debug&
OutputHistogram(
const std::string& image_name_suffix,
const cv::Mat& histogram,
int item_width = 4,
bool is_print_image_path =
false)
const;
122 const Debug&
OutputHistogram(
const cv::Mat& histogram,
int item_width = 4,
bool is_print_image_path =
false)
const;
135inline Debug::Counter::Counter(
size_t init_count,
size_t step) : count(init_count), step(step) {}
146inline size_t Debug::Counter::GetCount() {
147 size_t current_count = count;
149 return current_count;
224inline Debug::ConfigLines::ConfigLines(
const std::vector<Line>& lines,
bool output_seq_num,
bool is_arrowed,
const cv::Scalar& line_color,
int line_thickness,
const cv::Scalar& text_color,
int text_thickness) : lines(lines), output_seq_num(output_seq_num), is_arrowed(is_arrowed), line_color(line_color), line_thickness(line_thickness), text_color(text_color), text_thickness(text_thickness) {}
239 for (
int i =
int(lines.size()) - 1;
i >= 0; --
i) {
241 cv::putText(
image, std::to_string(
i), lines[
i].pt1, 1, 1, text_color, text_thickness);
244 cv::arrowedLine(
image, lines[
i].pt1, lines[
i].pt2, line_color, line_thickness, 8, 0, 0.01);
246 cv::line(
image, lines[
i].pt1, lines[
i].pt2, line_color, line_thickness);
266inline Debug::ConfigRects::ConfigRects(
const std::vector<Rect>& rects,
bool output_seq_num,
const cv::Scalar& rect_color,
int rect_thickness,
const cv::Scalar& text_color,
int text_thickness) : rects(rects), output_seq_num(output_seq_num), rect_color(rect_color), rect_thickness(rect_thickness), text_color(text_color), text_thickness(text_thickness) {}
281 for (
int i =
int(rects.size()) - 1;
i >= 0; --
i) {
283 cv::putText(
image, std::to_string(
i), cv::Point(rects[
i].x, rects[
i].y), 1, 1, text_color, text_thickness);
285 cv::rectangle(
image, rects[
i], rect_color, rect_thickness);
325 this->is_enable_image_output = is_enable_image_output;
532 output_image_name_suffix.Finish();
556 if (!is_enable_image_output)
601 Cm_Assert(!output_image_name_suffix.IsInitial(),
"please call the \"NamedStart\"(or \"NamedSwitch\") function to set the name of the output image!!!");
624 if (!is_enable_image_output)
685 Cm_Assert(!output_image_name_suffix.IsInitial(),
"please call the \"NamedStart\" function to set the name of the output image!!!");
static ComplexPrinter CPrint
复杂打印器
const 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
输出图片
const Debug & NamedStart(const std::string &image_name_suffix) const
设置默认的输出图片名后缀
const Debug & CounterStart(const std::string &counter_name="__INITIAL__", size_t start=0, size_t step=1) const
图片输出计数器开始计数
std::string image_name
图片名
static Printer Print
简单打印器
const Debug & CounterEnd() const
图片输出计数器结束计数
std::string output_image_path
输出图片路径
const Debug & OutputHistogram(const std::string &image_name_suffix, const cv::Mat &histogram, int item_width=4, bool is_print_image_path=false) const
输出直方图
Debug & SetImageOutputStatus(bool is_enable_image_output)
设置图片输出状态
Debug(const std::string &output_image_path="", const std::string &image_name="debug", bool is_enable_image_output=true)
调试类的带参构造函数
const Debug & NamedEnd() const
撤销默认的输出图片名后缀的设置
#define Cm_Assert(expr, message)
断言宏
#define Cm_WEAK_ATTRIBUTE
弱符号定义宏
std::string Sprintf(const char *format,...)
格式化输出字符串
const ConfigLines & DrawLines(cv::Mat &image) const
在图片上绘制线
ConfigLines(const std::vector< Line > &lines, bool output_seq_num=true, bool is_arrowed=true, const cv::Scalar &line_color=cv::Scalar(255, 0, 0), int line_thickness=1, const cv::Scalar &text_color=cv::Scalar(0, 0, 255), int text_thickness=1)
带有打印配置参数的线列表的带参构造函数
ConfigRects(const std::vector< Rect > &rects, bool output_seq_num=true, const cv::Scalar &rect_color=cv::Scalar(255, 0, 0), int rect_thickness=2, const cv::Scalar &text_color=cv::Scalar(0, 0, 255), int text_thickness=1)
带有打印配置参数的矩形列表的带参构造函数
const ConfigRects & DrawRects(cv::Mat &image) const
在图片上绘制矩形