该接口类提供了提供了用于访问、操作、绘制 LPV 图像对象的功能。 更多...
Public 成员函数 | |
| ILImage * | ConvertFormat (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) |
| ILImage * | GetChannel (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 | |
| ILObject * | Copy () |
| 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 对象。
该接口提供了多种初始化图像数据的方式,以下列出几种较为常用的方式。
| ILImage* ConvertFormat | ( | LPVImageFormat | format, |
| double | gain, | ||
| double | offset | ||
| ) |
转换图像类型,同时进行(可选的)增益和偏移, \( I' = I * gain + offset \),数值越界时将发生截断,以避免数值溢出。 对于在通道数不同的图像类型间的转换,查阅 ImageFormat 中指明的特殊处理
| [in] | format | 目标图像类型 |
| [out] | resultImage | 输出结果图像 |
| [in] | gain | 增益值,设置为 1 则事实上不作增益 |
| [in] | offset | 偏移值,设置为 0 则事实上不作偏移 |
复制输入图像的内容并覆盖当前图像的指定位置
| [in] | img | 输入的图像。若输入图像的尺寸过大或超出当前图像的范围,多余部分将被忽略。若当前图像尺寸为空,将构造一个足够拷贝的尺寸。 |
| [in] | region | 输入的区域。用于剪裁输入图像的一部分作为拷贝对象。可为空。 |
| [in] | panX | x 方向的平移量 |
| [in] | panY | y 方向的平移量 |
| void CopyTo | ( | ILImage * | dstImg | ) |
拷贝到另一个图像对象。
若当前图像类使用内部数据块,将拷贝该数据块到 dstImg,修改 dstImg 的图像数据,不会影响当前图像类。 否则,仅将数据指针传递到 dstImg,而不拷贝数据,修改 dstImg 的图像数据将同时修改当前图像类。
| [out] | dstImg | 拷贝到该目标图像 |
| void Draw | ( | HDC | hdc, |
| double | zoomX, | ||
| double | zoomY, | ||
| double | panX, | ||
| double | panY | ||
| ) |
在给定的设备上绘制图像。
| 类型 | 绘制内容 |
|---|---|
| U8C1 / U8C3 | 原图 |
| U16C1 / S32C1 / F32C1 | 最大最小归一化后的灰度图 |
| F32C2 | 先基于像素的实部和虚部计算幅值后取自然对数,最后最大最小归一化后的灰度图 |
| void DrawAsMask | ( | HDC | hdc, |
| double | zoomX, | ||
| double | zoomY, | ||
| double | panX, | ||
| double | panY | ||
| ) |
| ILImage* GetChannel | ( | int | channelIdx | ) |
从多通道图像中提取某一个给定索引的通道图像。仅用于多通道图像
| [in] | channelIdx | 输入的通道索引,可为 0,1 或 2 |
| channelImage | 返回通道图像。这是一张灰度图,尺寸与当前的彩色图像相同。 |
| LPVErrorCode LoadRawFile | ( | LString | filename, |
| int | w, | ||
| int | h, | ||
| int | flags | ||
| ) |
从 .raw 文件读取图像
| [in] | w | 图像的宽度,以像素为单位的正整数。 | ||||||
| [in] | h | 图像的高度,以像素为单位的正整数。 | ||||||
| [in] | flags | 控制 raw 数据的解析方式
| ||||||
| [in] | filename | 文件路径,可为绝对或相对路径,包含文件夹、文件名和扩展名 |
| error | 返回错误码 |
| LPVErrorCode Save | ( | LString | filename, |
| ILRegion * | region | ||
| ) |
保存图像对象到指定的文件。保存格式有输入路径中的扩展名指定。当前版本,支持保存 BMP, PNG, JPG, JPEG, TIFF, WEBP 格式。
| [in] | region | 指定保存图像中的局部区域。可为空,则保持全图。 |
| [in] | filename | 文件路径,可为绝对或相对路径,包含文件夹、文件名和扩展名 |
| error | 返回错误码 |
| LPVErrorCode SaveWithFormat | ( | LString | filename, |
| LString | format, | ||
| ILRegion * | region | ||
| ) |
保存图像对象到指定的文件。保存格式有输入的 format 参数指定。当前版本,支持以下格式。
| 格式 | 用途 |
|---|---|
| bmp | Windows-BMP 格式
|
| jpeg | JPEG 格式 - 无损压缩
|
| png | PNG 格式 - 有损压缩
|
| tiff | TIFF 格式 - 无损压缩
|
| webp | WEBP format - 无损或有损压缩
|
| [in] | format | 指定保存格式。 |
| [in] | region | 指定保存图像中的局部区域。可为空,则保持全图。 |
| [in] | filename | 文件路径,可为绝对或相对路径,包含文件夹、文件名和扩展名 |
| error | 返回错误码 |
| void SetChannel | ( | int | channelIdx, |
| ILImage * | channelImage | ||
| ) |
设置彩色图像中某一个给定索引的通道图像。仅用于彩色图像。
| [in] | channelIdx | 输入的通道索引,可为 0,1 或 2 |
| [in] | channelImage | 输入的通道图像。这是一张灰度图,尺寸与当前的彩色图像相同。 |
| 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 | 是否拷贝外部数据块的内容。 |
| void SetSize | ( | int | w, |
| int | h | ||
| ) |
设置图像为指定尺寸。像素的数值为未定义的,可调用 SetTo() 或 SetToColor() 接口将其全部设置为 0 或其他数值。 如果当前图像尺寸与设置尺寸相同,保留当前数据。 输入 0 的宽度和高度,将重置该图像为空。
| [in] | w | 输入图像宽度 |
| [in] | h | 输入图像高度 |
| void SetTo | ( | int | val, |
| ILRegion * | region | ||
| ) |
将图像中给定区域内的像素设置为指定的数值。对于多通道图像,所有通道都设置为相同的数值。
| [in] | val | 填充的数值 |
| [in] | region | 输入的区域。若输入区域的尺寸过大或超出当前图像的范围,多余部分将被忽略。可为空,表示整个图像。 |
将图像中给定区域内的像素设置为指定的 RGB 值。仅用于彩色图像。
| [in] | val | 颜色值 |
| [in] | region | 输入的区域。若输入区域的尺寸过大或超出当前图像的范围,多余部分将被忽略。可为空,表示整个图像。 |
将图像中给定区域内的像素设置为指定的标量。 对于多通道图像(如 LPVImageFormatColor 或 LPVImageFormatComplex),scalar 各通道的数值被设置到图像的对应通道中。 对于单通道图像(如 LPVImageFormatGrayscale8 或 LPVImageFormatF32C1),多余通道的数值将被忽略。
| [in] | val | 填充的标量,按照图像类型对数值进行截断,避免溢出。 |
| [in] | region | 输入的区域。若输入区域的尺寸过大或超出当前图像的范围,多余部分将被忽略。可为空,表示整个图像。 |
|
getset |
图像类型
对于非空的图像,如果修改其图像类型,将自动进行类型转换,以适配新图像类型。
一般情况下,将逐像素转换到目标数据类型,不缩放或修改数值,对超出数值范围的数值进行截断,避免数值溢出。 如果目标类型有多个通道,所有通道将赋予相同的数值。 例外情况如下所示:
| 原类型 | 新类型 | 转换 |
|---|---|---|
| U8C1 | U8C3 | 将灰度图转成彩色图像,每个像素的 3 个通道的数值相同,行为与 GrayToBGR() 相同 |
| U8C3 | U8C1 | 将彩色图像转成灰度图,行为与 BGRToGray() 相同 |
| U8C3 | U16C1 / S32C1 / F32C1 / F32C2 | 先将像素转为灰度值,行为与 BGRToGray() 相同,再进行通用转换 |
| F32C2 | U8C1 / U8C3 / U16C1 / S32C1 / F32C1 | 先基于像素的实部和虚部计算幅值后取自然对数,再进行通用转换 |
|
getset |
单图像中某个像素的数值,如灰度图
| [in] | x | 像素的 x 坐标 |
| [in] | y | 像素的 y 坐标 |
|
getset |
图像中某个像素的颜色值
| [in] | x | 像素的 x 坐标 |
| [in] | y | 像素的 y 坐标 |
|
getset |
图像中某个像素的标量,按照图像类型可能包含多个通道。不满三通道时,多余通道填 0。
| [in] | x | 像素的 x 坐标 |
| [in] | y | 像素的 y 坐标 |