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

图像类 更多...

#include <image.h>

类 cm::Image 继承关系图:
cm::Image 的协作图:

Public 成员函数

 Image ()
 图像类的默认构造函数
 
 Image (const Image &image)
 图像类的拷贝构造函数
 
 Image (const cv::Mat &image)
 图像类的带参构造函数
 
 ~Image ()
 图像类的析构函数
 
cv::Size Size () const
 获取图像的大小
 
ImageResize (size_t height, size_t width, int interpolation=cv::INTER_LINEAR)
 重新设置图像大小
 
ImageResize (size_t max_size, ResizeType resize_type=RT_AUTO)
 重新设置图像大小
 
ImageScale (double factor, int interpolation=cv::INTER_LINEAR)
 缩放图像
 
ImageRmRedBlueStamp (uchar bg_gray_value=255)
 删除图像中的红色和蓝色印章
 
ImageRmRedStamp (uchar bg_gray_value=255)
 删除图像中的红色印章
 
ImageHorizontalLengthSmooth (int threshold)
 水平游程平滑
 
Rects GetTextAreaOutline (size_t dilate_size, double max_aspect_ratio=30) const
 获取文本区域轮廓
 
Lines GetLines (LineType line_type, const ImagePreprocessor &imp, int threshold, double min_line_length, double max_line_gap=10) const
 通过霍夫变换获取线
 
ImageModifyLinesAreaValue (LineType line_type, const Lines &lines, int pixel_margin=2, uchar pixel_value=0)
 修改图像中线所在区域的灰度值
 
Image InvertColorRegion (double min_area=7000) const
 反转图像中的彩色块
 
Image SeparateColor (SeparatedColorType type) const
 提取指定颜色像素图像
 
Image GetGrayHistogram () const
 计算图像的灰度直方图
 

静态 Public 成员函数

static double AdjustImageByGrayImage (cv::Mat &image, const cv::Mat &gray_image, uchar bg_gray_value, const std::vector< uchar > &thresholds)
 通过灰度图像调整输入图像
 

详细描述

图像类

该类表示图像对象,公有继承自 OpenCV 中的 cv::Mat 类,提供了一系列图像处理和分析的功能,包括调整大小、去除红蓝色印章、水平游程平滑、文本区域轮廓检测等操作。

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

在文件 image.h38 行定义.

构造及析构函数说明

◆ Image() [1/3]

cm::Image::Image ( )

图像类的默认构造函数

该构造函数用于创建一个空的图像对象。

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

在文件 image.cpp21 行定义.

◆ Image() [2/3]

cm::Image::Image ( const Image & image)

图像类的拷贝构造函数

该构造函数用于创建一个图像对象,并将其初始化为另一个给定的图像对象的副本。

参数
image另一个给定的图像对象
注意
该构造函数执行浅拷贝操作,即新创建的图像对象和原始图像对象并不是独立的,修改新图像会影响原始图像。
作者
dreamy-xay
日期
2023-12-19

在文件 image.cpp45 行定义.

◆ Image() [3/3]

cm::Image::Image ( const cv::Mat & image)

图像类的带参构造函数

该构造函数用于创建一个图像对象,并初始化为给定的cv::Mat图像。

参数
image给定的cv::Mat图像
作者
dreamy-xay
日期
2023-12-19

在文件 image.cpp32 行定义.

◆ ~Image()

cm::Image::~Image ( )

图像类的析构函数

该析构函数用于释放区间对象所占用的资源。

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

在文件 image.cpp54 行定义.

成员函数说明

◆ AdjustImageByGrayImage()

double cm::Image::AdjustImageByGrayImage ( cv::Mat & image,
const cv::Mat & gray_image,
uchar bg_gray_value,
const std::vector< uchar > & thresholds )
static

通过灰度图像调整输入图像

根据灰度图像和阈值数据调整输入图像,将指定颜色区域的像素值设置为背景灰度值,并返回图像的平均灰度值。

参数
[in,out]image图像
[in]gray_image灰度图像
[in]bg_gray_value背景灰度值(会将指定颜色值设置为该值)
[in]thresholds检测指定颜色区域的阈值数据
返回
图像的平均灰度
作者
dreamy-xay
日期
2023-12-18

在文件 image.cpp246 行定义.

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

◆ GetGrayHistogram()

Image cm::Image::GetGrayHistogram ( ) const

计算图像的灰度直方图

该函数用于计算输入图像的灰度直方图,即统计图像中每个灰度级别的像素数量,并返回表示灰度直方图的图像。首先对输入的单通道灰度图像进行判空处理,然后使用 OpenCV 的 calcHist 函数计算灰度直方图。计算过程中,设置直方图的大小为256,范围为0到255,最终得到表示灰度直方图的图像。

警告
输入图像必须是单通道的灰度图像。
返回
灰度直方图
作者
dreamy-xay
日期
2024-02-05

在文件 image.cpp634 行定义.

◆ GetLines()

Lines cm::Image::GetLines ( LineType line_type,
const ImagePreprocessor & imp,
int threshold,
double min_line_length,
double max_line_gap = 10 ) const

通过霍夫变换获取线

该函数利用霍夫变换在图像中检测指定类型(横线或竖线)的线段,并返回检测到的线列表。

参数
line_type检测的线类型(横线或者竖线)
imp图像预处理器
threshold霍夫变换的阈值,表示直线上至少需要多少个交点才被检测为一条直线,较大的值可过滤掉短线段,较小的值可能导致检测到更多线段
min_line_length最小线段长度阈值,小于该值的线段会被排除
max_line_gap两条线段之间的最大允许间隙,超过该值则认为是不同的线段 默认为 10
注解

  • 输入图像必须非空,否则将返回空列表。
  • 函数调用前需要确保传入的图像是单通道的二值图像。
  • 参数 threshold、min_line_length、max_line_gap 的取值需根据具体情况调整以获得理想的线段检测效果。
返回
线列表
作者
dreamy-xay
日期
2023-12-28

在文件 image.cpp416 行定义.

函数调用图:

◆ GetTextAreaOutline()

Rects cm::Image::GetTextAreaOutline ( size_t dilate_size,
double max_aspect_ratio = 30 ) const

获取文本区域轮廓

该函数用于提取图像中的文本区域矩形轮廓数据,并以列表的形式返回。在提取文本区域之前,可以根据设定的阈值选择是否进行指定膨胀核的膨胀操作。

参数
dilate_size膨胀核大小(当小于 1 时,不进行膨胀)
max_aspect_ratio最大宽高比(文本区域矩形框的宽高比 <= 最大宽高比) 默认为 20
返回
文本区域矩形轮廓列表
作者
dreamy-xay
日期
2024-01-03

在文件 image.cpp359 行定义.

◆ HorizontalLengthSmooth()

Image & cm::Image::HorizontalLengthSmooth ( int threshold)

水平游程平滑

根据指定的游程阈值,对图像进行水平游程平滑处理。游程长度小于等于游程阈值的黑色像素点会被设置为白色,从而实现图像的平滑处理。

参数
threshold游程阈值(游程长度小于等于该阈值的黑色像素会被设置为白色)
返回
类自身引用,方便链式调用
作者
dreamy-xay
日期
2023-12-18

在文件 image.cpp296 行定义.

◆ InvertColorRegion()

Image cm::Image::InvertColorRegion ( double min_area = 7000) const

反转图像中的彩色块

该函数用于将输入图像中的彩色区域进行颜色反转处理,以实现彩色背景上的白色字体反转成黑底白字的效果。在处理过程中,首先将输入图像转换为灰度图像,并通过OTSU算法获取二值图。然后找到所有白色块的轮廓,并根据最小有效区域面积阈值过滤掉小面积的白色块作为噪声。针对有效区域,将原图像中的白色区域重置为黑色,之后再将二值图像转换为三通道 RGB 彩色图像,然后对掩膜区域进行颜色反转处理,最终得到反转后的图像。

参数
min_area最小区域面积
返回
处理后的图像
作者
dreamy-xay
日期
2024-02-27

在文件 image.cpp536 行定义.

◆ ModifyLinesAreaValue()

Image & cm::Image::ModifyLinesAreaValue ( LineType line_type,
const Lines & lines,
int pixel_margin = 2,
uchar pixel_value = 0 )

修改图像中线所在区域的灰度值

该函数用于在单通道图像中,根据线的类型及位置,修改线所在区域的像素值。

  • 对于横线,会沿着线的垂直方向上下扩展指定像素范围,修改对应区域的像素值;
  • 对于竖线,会沿着线的水平方向左右扩展指定像素范围,修改对应区域的像素值;
  • 对于未知类型的线列表,会将其根据横线和竖线进行分类后分别处理。
参数
line_type线类型,支持横线、竖线和未知类型的线列表
lines线列表
pixel_margin线所在位置向外扩散的像素数量 默认为 2
pixel_value修改后的像素灰度值 默认为 0
返回
类自身引用,方便链式调用
警告
输入图像必须非空,并且为单通道图像。
作者
dreamy-xay
日期
2024-01-07

在文件 image.cpp452 行定义.

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

◆ Resize() [1/2]

Image & cm::Image::Resize ( size_t width,
size_t height,
int interpolation = cv::INTER_LINEAR )

重新设置图像大小

通过 cv::resize 函数按比例改变图像的大小,并根据情况选择不同的插值方法进行处理。

注解
具体差插值的选择方式:
  • 缩小:默认使用区域插值 cv::INTER_AREA,根据像素面积关系进行重新采样,在图像缩小时可以得到较好的效果,避免产生锯齿状边缘;
  • 其他情况:使用指定插值方法,即 interpolation。
参数
height新图像高度
width新图像宽度
interpolation插值方法,用于确定如何处理像素之间的差值(仅在非缩小图像时生效) 默认为 cv::INTER_LINEAR,即双线性插值,通过对目标像素周围四个最近的原始像素进行线性插值得到目标像素值
返回
类自身引用,方便链式调用
作者
dreamy-xay
日期
2023-12-19

在文件 image.cpp85 行定义.

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

◆ Resize() [2/2]

Image & cm::Image::Resize ( size_t max_size,
ResizeType resize_type = RT_AUTO )

重新设置图像大小

根据指定的最大尺寸和调整类型来重新设置图像的大小,可以选择缩小、放大或保持大小不变。

参数
max_size图像最大大小(最大的宽或者高)
resize_type支持 resize 图像的类型 默认为 cm::RT_AUTO ,即无论是缩小还是放大都会 resize,共有三种选择:
  • RT_AUTO:自动调整,无论是缩小还是放大都会重新设置大小
  • RT_ZOOM_IN:仅当图像的宽和高均小于最大尺寸时才放大图像以适应最大尺寸
  • RT_ZOOM_OUT:仅当图像的宽或高大于最大尺寸时才缩小图像以适应最大尺寸
返回
类自身引用,方便链式调用
作者
dreamy-xay
日期
2023-12-19

在文件 image.cpp113 行定义.

函数调用图:

◆ RmRedBlueStamp()

Image & cm::Image::RmRedBlueStamp ( uchar bg_gray_value = 255)

删除图像中的红色和蓝色印章

根据预定义的颜色范围,从图像中删除红色和蓝色印章。首先将图像分离为红、绿、蓝三个通道,然后使用指定的颜色范围调整图像,将印章区域的像素值设为背景色,最后将三个通道合并为一张图像。

参数
bg_gray_value背景灰度值(会将红色和蓝色印章设置为该值) 默认为 255
前置条件
要求输入的图像必须是三通道的 RGB 图像。
警告
印章并不能完全去除干净,通常需要结合其他的去噪方法,比如高斯滤波等。
返回
类自身引用,方便链式调用
作者
dreamy-xay
日期
2023-12-18

在文件 image.cpp164 行定义.

函数调用图:

◆ RmRedStamp()

Image & cm::Image::RmRedStamp ( uchar bg_gray_value = 255)

删除图像中的红色印章

根据指定的阈值数据,将图像中的红色印章部分设置为图像的背景灰度值。首先将输入图像分离为红、绿、蓝三个通道,然后使用给定的阈值数据调整图像,将红色印章区域的像素值设为背景灰度值,最后将三个通道合并为一张图像。

前置条件
要求输入的图像必须是三通道的 RGB 图像。
参数
bg_gray_value背景灰度值(会将红色印章设置为该值) 默认为 255
返回
图像的平均灰度
作者
dreamy-xay
日期
2023-12-18

在文件 image.cpp211 行定义.

函数调用图:

◆ Scale()

Image & cm::Image::Scale ( double factor,
int interpolation = cv::INTER_LINEAR )

缩放图像

根据给定的缩放因子,按比例调整图像的大小。可以选择不同的插值方法来调整像素值以适应新的尺寸。

参数
factor缩放因子
interpolation插值方法(具体查看 Resize 方法 interpolation 参数) 默认为 cv::INTER_LINEAR,即双线性插值,通过对目标像素周围四个最近的原始像素进行线性插值得到目标像素值
返回
类自身引用,方便链式调用
作者
dreamy-xay
日期
2023-12-19

在文件 image.cpp145 行定义.

函数调用图:

◆ SeparateColor()

Image cm::Image::SeparateColor ( SeparatedColorType type) const

提取指定颜色像素图像

输入的 RGB 图像,通过转换为 HSV 颜色空间,提取指定颜色类型的像素,返回对应的二值图像。首先将输入的 RGB 图像转换为 HSV 颜色空间,然后根据不同的颜色类型进行阈值分割,提取出指定颜色范围内的像素,并将其转换为二值图像。对于不同的颜色类型,使用不同的颜色范围进行阈值分割,最终得到分割后的二值图像。

参数
type提取颜色类型,包括蓝色 cm::SCT_BLUE 、红色 cm::SCT_RED 和黑色 cm::SCT_BLACK
返回
根据颜色分割后的二值图像
作者
dreamy-xay
日期
2023-12-28

在文件 image.cpp592 行定义.

◆ Size()

cv::Size cm::Image::Size ( ) const

获取图像的大小

该函数用于提取图像的尺寸信息,并返回一个包含图像宽度和高度的 cv::Size 对象。

返回
一个包含图像宽度和高度的 cv::Size 对象
作者
dreamy-xay
日期
2024-05-26

在文件 image.cpp64 行定义.


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