Leaper Vision Toolkit
中文 / English 2.x
Public 成员函数 | 属性
ILImage接口 参考

该接口类提供了提供了用于访问、操作、绘制 LPV 图像对象的功能。 更多...

类 ILImage 继承关系图:
ILObject LImage

Public 成员函数

ILImageConvertFormat (LPVImageFormat format, double gain, double offset)
 
void CopyFrom (ILImage *img, ILRegion *region, int panX, int panY)
 
void CopyTo (ILImage *dstImg)
 
void Draw (HDC hdc, double zoomX, double zoomY, double panX, double panY)
 
void DrawAsMask (HDC hdc, double zoomX, double zoomY, double panX, double panY)
 
ILImageGetChannel (int channelIdx)
 
LPVErrorCode LoadRawFile (LString filename, int w, int h, int flags)
 
LPVErrorCode Save (LString filename, ILRegion *region)
 
LPVErrorCode SaveWithFormat (LString filename, LString format, ILRegion *region)
 
void SetChannel (int channelIdx, ILImage *channelImage)
 
void SetImageData (int w, int h, LPVOID dataPtr, int bpl, BOOL copyData)
 
void SetSize (int w, int h)
 
void SetTo (int val, ILRegion *region)
 
void SetToColor (LColor val, ILRegion *region)
 
void SetToScalar (LScalar scalar, ILRegion *region)
 
- Public 成员函数 继承自 ILObject
ILObjectCopy ()
 
LPVErrorCode Load (LString filename)
 
void Reset ()
 
LPVErrorCode Save (LString filename)
 
BOOL Valid ()
 

属性

int BytesPerLine [get]
 每行像素数据的字节数,包含行末用于对齐的字节。
 
LPVOID DataPointer [get]
 图像数据指针。注意不要在外部修改数据块的内容。
 
int Height [get]
 图像的高度,行的总数
 
LPVImageFormat ImageFormat [get, set]
 图像类型 更多...
 
int Pixel (int x, int y) [get, set]
 
LColor PixelColor (int x, int y) [get, set]
 
LScalar PixelScalar (int x, int y) [get, set]
 图像中某个像素的标量,按照图像类型可能包含多个通道。不满三通道时,多余通道填 0。 更多...
 
int Width [get]
 图像的宽度,列的总数
 
- 属性 继承自 ILObject
LString Name [get, set]
 对象的名称,默认为空。
大多数情况下,LPV 算法类并不使用这个名称。
ILDrawable::SetDrawName() 启用,该名称将被绘制在对象的附近 更多...
 

详细描述

该接口类提供了提供了用于访问、操作、绘制 LPV 图像对象的功能。

图像是视觉系统的核心对象。该接口整合了用于表示一个矩形图像的所有功能,以一个二维密集矩阵的形式,按行存储图像的像素。

使用这个接口,需要创建一个 LImage 对象。

该接口提供了多种初始化图像数据的方式,以下列出几种较为常用的方式。

  1. 从文件读取图像,调用 ILImage::Load()
  2. 使用数据指针和图像信息初始化图像数据,调用 ILImage::SetImageData()。通常在连接相机时,在相机的回调函数中使用这种方式。
  3. 手动设置图像尺寸,然后为每个像素单独赋值。请注意这种方式十分低效。

示例代码

成员函数说明

◆ ConvertFormat()

ILImage* ConvertFormat ( LPVImageFormat  format,
double  gain,
double  offset 
)

转换图像类型,同时进行(可选的)增益和偏移, \( I' = I * gain + offset \),数值越界时将发生截断,以避免数值溢出。 对于在通道数不同的图像类型间的转换,查阅 ImageFormat 中指明的特殊处理

参数
[in]format目标图像类型
[out]resultImage输出结果图像
[in]gain增益值,设置为 1 则事实上不作增益
[in]offset偏移值,设置为 0 则事实上不作偏移

◆ CopyFrom()

void CopyFrom ( ILImage img,
ILRegion region,
int  panX,
int  panY 
)

复制输入图像的内容并覆盖当前图像的指定位置

参数
[in]img输入的图像。若输入图像的尺寸过大或超出当前图像的范围,多余部分将被忽略。若当前图像尺寸为空,将构造一个足够拷贝的尺寸。
[in]region输入的区域。用于剪裁输入图像的一部分作为拷贝对象。可为空。
[in]panXx 方向的平移量
[in]panYy 方向的平移量

◆ CopyTo()

void CopyTo ( ILImage dstImg)

拷贝到另一个图像对象。
若当前图像类使用内部数据块,将拷贝该数据块到 dstImg,修改 dstImg 的图像数据,不会影响当前图像类。 否则,仅将数据指针传递到 dstImg,而不拷贝数据,修改 dstImg 的图像数据将同时修改当前图像类。

参数
[out]dstImg拷贝到该目标图像

◆ Draw()

void Draw ( HDC  hdc,
double  zoomX,
double  zoomY,
double  panX,
double  panY 
)

在给定的设备上绘制图像。

类型 绘制内容
U8C1 / U8C3 原图
U16C1 / S32C1 / F32C1 最大最小归一化后的灰度图
F32C2 先基于像素的实部和虚部计算幅值后取自然对数,最后最大最小归一化后的灰度图
参见
DrawAsMask()
Use Draw Functions
备注
该函数在 Linux / MacOS 平台暂不可用。

◆ DrawAsMask()

void DrawAsMask ( HDC  hdc,
double  zoomX,
double  zoomY,
double  panX,
double  panY 
)

以蒙版形式绘制图像到给定设备,保留图像中的非零值。

参见
Draw()
Use Draw Functions
备注
该函数在 Linux / MacOS 平台暂不可用。

◆ GetChannel()

ILImage* GetChannel ( int  channelIdx)

从多通道图像中提取某一个给定索引的通道图像。仅用于多通道图像

参数
[in]channelIdx输入的通道索引,可为 0,1 或 2
返回值
channelImage 返回通道图像。这是一张灰度图,尺寸与当前的彩色图像相同。

◆ LoadRawFile()

LPVErrorCode LoadRawFile ( LString  filename,
int  w,
int  h,
int  flags 
)

从 .raw 文件读取图像

参数
[in]w图像的宽度,以像素为单位的正整数。
[in]h图像的高度,以像素为单位的正整数。
[in]flags控制 raw 数据的解析方式
FlagsUsage
0每个像素占用 16 位
1每两个 MONO-12 像素占用 24 位,各自的低 4 位合并为一个 8 位
[in]filename文件路径,可为绝对或相对路径,包含文件夹、文件名和扩展名
返回值
error返回错误码
参见
Load()
自从
2.7.0

◆ Save()

LPVErrorCode Save ( LString  filename,
ILRegion region 
)

保存图像对象到指定的文件。保存格式有输入路径中的扩展名指定。当前版本,支持保存 BMP, PNG, JPG, JPEG, TIFF, WEBP 格式。

参数
[in]region指定保存图像中的局部区域。可为空,则保持全图。
[in]filename文件路径,可为绝对或相对路径,包含文件夹、文件名和扩展名
返回值
error返回错误码
参见
Load(), SaveWithFormat()

◆ SaveWithFormat()

LPVErrorCode SaveWithFormat ( LString  filename,
LString  format,
ILRegion region 
)

保存图像对象到指定的文件。保存格式有输入的 format 参数指定。当前版本,支持以下格式。

格式用途
bmpWindows-BMP 格式
  • 仅支持存储 8 位的单通道(灰度)或三通道(RGB 彩色)图像
jpegJPEG 格式 - 无损压缩
  • 仅支持存储 8 位的单通道(灰度)或三通道(RGB 彩色)图像
  • 可传入一个 0 ~ 100 的整数用于指定压缩率,如 jpeg 60 。默认压缩率为 95
pngPNG 格式 - 有损压缩
  • 仅支持存储 8 位的单通道(灰度)或三通道(RGB 彩色)图像
  • 可传入一个 0 ~ 9 的整数用于指定压缩等级,如 png 6 。其中 0 表示无压缩,9 表示最大压缩。默认压缩等级为 0 。
tiffTIFF 格式 - 无损压缩
  • 支持存储所有类型的图像
webpWEBP format - 无损或有损压缩
  • 仅支持存储 8 位的单通道(灰度)或三通道(RGB 彩色)图像
  • 可传入一个 0 ~ 100 的整数用于指定压缩率,如 webp 60 。默认压缩率为 95
参数
[in]format指定保存格式。
[in]region指定保存图像中的局部区域。可为空,则保持全图。
[in]filename文件路径,可为绝对或相对路径,包含文件夹、文件名和扩展名
返回值
error返回错误码
参见
Save(), Load()
自从
2.19.0

◆ SetChannel()

void SetChannel ( int  channelIdx,
ILImage channelImage 
)

设置彩色图像中某一个给定索引的通道图像。仅用于彩色图像。

参数
[in]channelIdx输入的通道索引,可为 0,1 或 2
[in]channelImage 输入的通道图像。这是一张灰度图,尺寸与当前的彩色图像相同。

◆ SetImageData()

void SetImageData ( int  w,
int  h,
LPVOID  dataPtr,
int  bpl,
BOOL  copyData 
)

通过外部创建和管理的数据块,初始化图像数据。
copyData 设置为 False,该外部数据块覆盖当前图像类内部创建的数据块,用户需要保证在图像类的整个生命周期里,该外部数据块始终存活。
copyData 设置为 True,图像类将会把数据从外部数据块中拷贝到其内部创建的数据块中,并在内部管理其生命周期,用户无需额外保存该外部数据块。

参数
[in]w图像的宽度,以像素为单位的正整数。
[in]h图像的高度,以像素为单位的正整数。
[in]dataPtr指向外部数据块的数据指针
[in]bpl每行像素数据的字节数,包含行末用于对齐的字节。若设置为 0,则按照无对齐的假设,以图像宽度和每个像素的字节数自动计算。
[in]copyData是否拷贝外部数据块的内容。

◆ SetSize()

void SetSize ( int  w,
int  h 
)

设置图像为指定尺寸。像素的数值为未定义的,可调用 SetTo()SetToColor() 接口将其全部设置为 0 或其他数值。 如果当前图像尺寸与设置尺寸相同,保留当前数据。 输入 0 的宽度和高度,将重置该图像为空。

参数
[in]w输入图像宽度
[in]h输入图像高度

◆ SetTo()

void SetTo ( int  val,
ILRegion region 
)

将图像中给定区域内的像素设置为指定的数值。对于多通道图像,所有通道都设置为相同的数值。

参数
[in]val填充的数值
[in]region输入的区域。若输入区域的尺寸过大或超出当前图像的范围,多余部分将被忽略。可为空,表示整个图像。
参见
SetToColor(), SetToScalar()

◆ SetToColor()

void SetToColor ( LColor  val,
ILRegion region 
)

将图像中给定区域内的像素设置为指定的 RGB 值。仅用于彩色图像。

参数
[in]val颜色值
[in]region输入的区域。若输入区域的尺寸过大或超出当前图像的范围,多余部分将被忽略。可为空,表示整个图像。
参见
SetTo(), SetToScalar()

◆ SetToScalar()

void SetToScalar ( LScalar  scalar,
ILRegion region 
)

将图像中给定区域内的像素设置为指定的标量。 对于多通道图像(如 LPVImageFormatColor 或 LPVImageFormatComplex),scalar 各通道的数值被设置到图像的对应通道中。 对于单通道图像(如 LPVImageFormatGrayscale8 或 LPVImageFormatF32C1),多余通道的数值将被忽略。

参数
[in]val填充的标量,按照图像类型对数值进行截断,避免溢出。
[in]region输入的区域。若输入区域的尺寸过大或超出当前图像的范围,多余部分将被忽略。可为空,表示整个图像。
参见
SetTo(), SetToColor()

属性说明

◆ ImageFormat

LPVImageFormat ImageFormat
getset

图像类型

对于非空的图像,如果修改其图像类型,将自动进行类型转换,以适配新图像类型。
一般情况下,将逐像素转换到目标数据类型,不缩放或修改数值,对超出数值范围的数值进行截断,避免数值溢出。 如果目标类型有多个通道,所有通道将赋予相同的数值。 例外情况如下所示:

原类型 新类型 转换
U8C1 U8C3 将灰度图转成彩色图像,每个像素的 3 个通道的数值相同,行为与 GrayToBGR() 相同
U8C3 U8C1 将彩色图像转成灰度图,行为与 BGRToGray() 相同
U8C3 U16C1 / S32C1 / F32C1 / F32C2 先将像素转为灰度值,行为与 BGRToGray() 相同,再进行通用转换
F32C2 U8C1 / U8C3 / U16C1 / S32C1 / F32C1 先基于像素的实部和虚部计算幅值后取自然对数,再进行通用转换

◆ Pixel

int Pixel
getset

单图像中某个像素的数值,如灰度图

参数
[in]x像素的 x 坐标
[in]y像素的 y 坐标

◆ PixelColor

LColor PixelColor
getset

图像中某个像素的颜色值

参数
[in]x像素的 x 坐标
[in]y像素的 y 坐标

◆ PixelScalar

LScalar PixelScalar
getset

图像中某个像素的标量,按照图像类型可能包含多个通道。不满三通道时,多余通道填 0。

参数
[in]x像素的 x 坐标
[in]y像素的 y 坐标