图像处理模块总览 - Overview
本页说明什么
「图像处理」分类下的接口,是欧拉插件里围绕 屏幕截图、位图句柄、颜色模型、像素运算与经典图像算法 的一整套能力。它们为上层能力提供素材与算子支撑,例如:
- 图像识别:找图、相似度、动画匹配等(依赖此处生成的
OLAImage或文件); - 文字识别:截图识字、字库识字等(常配合取色、二值化、ROI);
- 自动化脚本:截屏监控、取色判断 UI 状态、区域找色点击等。
下文中的「接口」均指 DLL/COM 暴露的函数;不是需要单独安装的第三方 SDK,但会涉及与 GDI/DXGI 等截图后端、颜色空间、图像算法 对应的概念,可按需查阅各接口详情页。
典型数据流(从哪开始、到哪结束)
下面同时给出三种形式,任一种看不清时请看表格(一定可见)。在浏览器中打开文档站点时,应能看到彩色矢量流程图;若仅在编辑器里预览 Markdown,编辑器可能不渲染 SVG/HTML。
结构化流程数据(表格)
| 顺序 | 环节 | 是否必选 | 典型接口或含义 |
|---|---|---|---|
| 1 | 得到图像 | 是 | Capture / GetScreenData / GetScreenDataPtr / LoadImage 等 |
| 2 | 预处理(缓存、区域) | 否 | SetSnapCacheTime、LockDisplay、Cropped、CroppedRef 等 |
| 3 | 预处理(颜色与算法) | 否 | Threshold、滤波与形态学、颜色转换类等 |
| 4 | 使用图像 | 是 | GetColorPtr、FindColor*、CmpColor*、绘制与编码等 |
| 5 | 释放资源 | 是 | FreeImagePtr 等(与插件分配句柄配对) |
矢量流程图(SVG)
卡片式步骤条(HTML)
与上表对应关系:下述第 2 点「加工」 合并了表中第 2、3 行(缓存/裁剪/颜色与算法预处理)。
- 得到图像:
Capture落盘,或GetScreenData/GetScreenDataPtr得到字节流或内存图句柄;也可用LoadImage从文件/内存载入。 - 加工:按任务做缩放、旋转、阈值、模糊、形态学等(见下文分组)。
- 消费:取色、多点比色、区域找色、自己绘制标记等。
- 收尾:凡由插件分配的图片句柄,需按文档调用
FreeImagePtr等释放,避免泄漏。
必读:颜色与点阵约定
在找色、比色、找色块等接口中,颜色往往不是单一 RGB,而是 区间、偏色、HSV/灰度 等组合条件。
| 文档 | 作用 |
|---|---|
| 颜色模型说明 - ColorModel | 统一说明 colorJson、简化字符串、灰度/HSV 等写法,几乎所有颜色相关接口都会引用它。 |
| 点阵颜色列表格式说明 - PointColorListFormat | 多点找色(FindMultiColor* 等)里 pointColorList 的格式,用于「多点同时满足」类逻辑。 |
建议先通读 ColorModel,再进入具体找色接口,否则会难以理解参数含义与容错范围。
一、截图、屏幕与缓存
| 接口 | 用途概要 |
|---|---|
| 截图并保存成文件 - Capture | 按矩形区域截屏并 直接写入文件,适合落盘留证、简单流水线。 |
| 截图GIF - CaptureGif | 录制指定区域的 GIF 动画,用于短时动效或简易录屏。 |
| 截图返回字节流 - GetScreenDataBmp / GetScreenData | 截屏得到 BMP 或原始字节流,便于自行解析或传给其他模块,不经过插件图句柄。 |
| 获取指定区域图象 - GetScreenDataPtr | 截屏得到 OLAImage 句柄,是后续裁剪、找色、识别最常用的入口之一。 |
| 获取指定区域刷新率 - GetWindowsFps | 估算区域画面 FPS,用于判断动画、视频区是否流畅或卡死。 |
| 指定区域数据是否卡屏 - IsDisplayDead | 判断区域是否 长时间无变化(卡屏/静止),可用于监控或重试策略。 |
| 锁定当前屏幕图像 - LockDisplay | 与截图缓存配合,锁定当前帧显示数据,避免高速连续截屏时撕裂或不一致(详见该页说明)。 |
| 设置截图缓存时间 - SetSnapCacheTime | 调节 截图缓存有效期,平衡实时性与性能。 |
| 设置图片缓存开关 - SetImageCache | 控制 本地图片路径缓存 等行为,减轻重复 IO。 |
怎么选:要 文件 用 Capture;要 内存里接着算 用 GetScreenDataPtr;只要 原始字节 用 GetScreenData* 系列。性能敏感场景关注 SetSnapCacheTime、SetImageCache、LockDisplay。
二、载入、保存、拷贝与释放(生命周期)
| 接口 | 用途概要 |
|---|---|
| 加载图片 - LoadImage | 从 文件路径 载入为 OLAImage。 |
| 加载图片 - LoadImageFromRGBData | 从 RGB 缓冲区 创建图像。 |
| 载入bmp图片 - LoadImageFromBmpData | 从 BMP 内存块 创建图像。 |
| 加载文件夹下的所有图片 - LoadImagePath | 批量加载目录下图片(常用于 多模板、资源批处理)。 |
| 保存图片 - SaveImageFromPtr | 将 句柄 存盘。 |
| 拷贝图片 - CopyImage | 深拷贝 一份图像数据,修改互不影响。 |
| 读取图片字节流 - GetImageData / GetImageBmpData / GetImagePngData | 从句柄导出 原始/BMP/PNG 数据,便于网络传输或第三方库。 |
| 释放路径下图片内存 - FreeImagePath | 按路径批量释放 LoadImagePath 等产生的缓存。 |
| 释放所有内存 - FreeImageAll | 释放插件持有的 全部图像资源(慎用,确保无并发使用)。 |
| 释放指定图片内存 - FreeImagePtr | 最常用:释放单个 OLAImage 句柄。 |
| 释放指定图片内存1 - FreeImageData | 另一路释放接口,见该页与 FreeImagePtr 的差异说明。 |
原则:谁创建句柄(截图、载入、算法返回的新图),谁负责在不用时 Free,避免 GDI/内存持续增长。
三、几何:尺寸、裁剪、旋转、覆盖与 ROI
| 接口 | 用途概要 |
|---|---|
| 裁剪图片 - Cropped | 深拷贝 子矩形,得到独立图像,后续修改不影响原图。 |
| 浅拷贝裁剪 - CroppedRef | ROI 视图,与原图 共享像素;省内存,但改 ROI 即改原图;父图释放后句柄失效。 |
| 获取图片大小 - GetImageSize | 查询宽高,用于循环与边界检查。 |
| 调整图片大小 - ReSize / ScalePixels | 缩放 到目标分辨率或按比例调整像素。 |
| 旋转图片 - RotateImage | 按角度旋转。 |
| 拼接图片 - ConcatImage | 多图 横向/纵向 拼接。 |
| 覆盖图片 - CoverImage | 一图 覆盖 到另一图指定位置(图层合成)。 |
| 获取ROI区域 - GetROIRegion | 提取 非零/感兴趣区域,常用于掩码、分割后处理。 |
| 快速ROI - FastROI | 快速获取 ROI 数据,偏重性能场景。 |
怎么选:需要 独立副本 用 Cropped;只读或省内存用 CroppedRef;与 字库/识别 常配合 GetROIRegion / FastROI 缩小计算范围。
四、颜色:取色与格式互转
| 接口 | 用途概要 |
|---|---|
| 取色 - GetColor | 从 绑定/屏幕上下文 取坐标颜色(与句柄无关的场景)。 |
| 获取像素颜色 - GetColorPtr | 从 OLAImage 句柄 取 (x,y) 像素颜色。 |
| ARGB颜色转为16进制格式 - ARGB2Hex / RGB2Hex | 数值颜色 → 字符串,便于日志与配置。 |
| 16进制格式颜色转为ARGB - Hex2ARGB / Hex2RGB | 字符串 → 数值。 |
| RGB转HSV - RGB2HSV / 十六进制转HSV - Hex2HSV | 颜色空间转换,便于 光照不变 的阈值设计。 |
| 转换颜色格式 - ConvertColor | 在插件支持的颜色表示之间转换。 |
这些接口与 ColorModel 一起,构成 「取色 → 配置找色条件 → 回读结果」 的闭环。
五、分割与图像分析:阈值、连通域、差异
| 接口 | 用途概要 |
|---|---|
| 图像阈值化 - Threshold | 全局或区域 二值化/分档,是后续形态学与区域分析的基础。 |
| 获取前景点 - GetForegroundPoints | 提取前景像素集合,用于统计或跟踪。 |
| 形态学梯度 - MorphGradient | 突出 边缘/边界 区域。 |
| 去除孤岛 - RemoveIslands | 去除小连通噪声点。 |
| 获取二值化图像 -GetThresholdImageFromMultiColorPtr / 获取指定区域二值化图像 -GetThresholdImageFromMultiColor | 按 多点颜色条件 生成二值图,衔接找色/字库流水线。 |
| 获取连通域 - GetConnectedComponents | 标记连通区域,用于 blob 分析、计数、质心。 |
| 获取指定颜色数量 - GetColorNum / GetColorNumPtr | 统计符合颜色的像素数或比例。 |
| 移除图片差异部分 - RemoveImageDiff | 两图 差异掩码,适合简单变化检测。 |
六、比色:单点与多点
| 接口 | 用途概要 |
|---|---|
| 对比颜色 - CmpColor / CmpColorPtr / CmpColorHex | 基础版:单点与 颜色模型 是否匹配。 |
| 对比颜色 - CmpColorEx / CmpColorPtrEx / CmpColorHexEx | 扩展版:更多控制项(详见各页)。 |
| 对比多色点 - CmpMultiColor / CmpMultiColorPtr | 一次判断 多个坐标 是否同时满足颜色条件,适合固定 UI 布局验色。 |
典型用途:脚本里「等按钮变绿再点」「血条是否低于某阈值」等,用 Cmp* 比用全图找色更轻量。
七、找色与找色块(区域搜索)
| 类型 | 接口 | 用途概要 |
|---|---|---|
| 单点找色 | FindColor、FindColorEx | 在矩形内找 第一个 匹配点或带扩展条件。 |
| 枚举点 | FindColorList、FindColorListEx | 找出 所有 匹配点(数量多时注意性能)。 |
| 多点找色 | FindMultiColor 等 | 相对偏移多点同时匹配,适合 特征点阵(参见 PointColorListFormat)。 |
| 色块 | FindColorBlock*、FindColorBlockList* 系列 | 在区域内找 连通色块、多块、带 Ex 变体;用于按钮区域、血条、大块纯色区域等。 |
找色块接口较多(路径/指针、是否 Ex),按你的数据来源(文件句柄 vs 内存图)和是否要 列表结果 选择对应变体即可;用于整块连通区域(色块 / Blob)定位。
八、像素编辑与几何绘制
| 接口 | 用途概要 |
|---|---|
| 创建图片 - CreateImage | 创建空白画布。 |
| 设置图片指定坐标的颜色 - SetPixel / SetPixelList | 单点或批量 改像素。 |
| 设置指定颜色为新的颜色 - SetColorsToNewColor | 颜色替换/重着色。 |
| 移除除指定颜色外的所有颜色 - RemoveOtherColors | 抠图式 保留指定颜色范围。 |
| 绘制圆形 - DrawCircle / 绘制矩形 - DrawRectangle / 绘制多边形 - DrawFillPoly | 在图像上 叠加矢量图形,便于调试或生成标注图。 |
九、滤波、边缘与形态学操作
| 接口 | 用途概要 |
|---|---|
| 高斯模糊 - GaussianBlur | 降噪、平滑,降低锯齿对找色的干扰。 |
| 图像锐化 - Sharpen | 增强边缘。 |
| Canny边缘检测 - CannyEdge | 提取轮廓,常用于 形状分析前处理。 |
| 翻转图像 - Flip | 水平/垂直翻转。 |
| 形态学顶帽 - MorphTophat / MorphBlackhat | 突出 亮/暗 细节,用于不均匀光照下的目标增强。 |
| 膨胀 - Dilation / 腐蚀 - Erosion | 形态学基本运算,用于 连接断线、去噪。 |
| 形态学开运算 - MorphOpen / MorphClose | 开运算去小凸刺,闭运算填小孔。 |
| 骨架化 - Skeletonize | 提取 中轴/骨架,用于细线条分析。 |
这些算子常组成 pipeline:Threshold → MorphOpen/Close → FindColorBlock,具体顺序依样本调节。
十、编码、二维码与二值打包
| 接口 | 用途概要 |
|---|---|
| 图片转为base64字符串 - ImageToBase64 / Base64ToImage | 与 JSON、HTTP、剪贴板交互时常用。 |
| 生成二维码 - CreateQRCode / CreateQRCodeEx | 生成二维码图。 |
| 解析二维码 - DecodeQRCode | 从图里读二维码内容。 |
| 压缩二值化图像成字符串 - BitPacking / BitUnpacking | 二值图 紧凑编码,常与 字库、传输 场景一起使用。 |
十一、多图拼接(全景/长图流水线)
| 接口 | 用途概要 |
|---|---|
| 从路径拼接图片 - ImageStitchFromPath | 从磁盘多图一键拼接(见页内参数)。 |
| 创建拼接实例 - ImageStitchCreate | 创建可复用的拼接上下文。 |
| 拼接图片追加 - ImageStitchAppend | 逐步追加子图。 |
| 获取拼接结果 - ImageStitchGetResult | 取出合成结果句柄或数据。 |
| 释放拼接实例 - ImageStitchFree | 释放拼接器资源。 |
适用于 滚动截屏、多 tile 合成 等;与单张 ConcatImage 相比,更偏 带匹配/对齐的长流程(细节见各页及 SetConfig 相关参数,如文档中提到的拼接匹配阈值)。
十二、调试与可视化
| 接口 | 用途概要 |
|---|---|
| 弹窗显示图片 - ShowImage / ShowImageFromFile | 调试时 快速预览 内存图或文件。 |
与侧边栏其它分类的关系(避免走错门)
| 分类 | 和「图像处理」的分工 |
|---|---|
| 图像识别 | 模板匹配、相似度、找图坐标;输入往往是模板图 + 大图。 |
| 文字识别 | OCR、字库;常先用本模块截图/裁剪出 ROI。 |
| 视频处理 | 视频帧级 读写与转码;单帧仍可转 OLAImage 再走图像处理。 |
| 图像数据库 | 资源与图片 入库管理,与 LoadImage / 识别流水线配合。 |
建议阅读顺序
- 颜色模型说明 - ColorModel
- 获取指定区域图象 - GetScreenDataPtr + 释放指定图片内存 - FreeImagePtr
- 按任务选:找色 →
FindColor*/FindMultiColor*;抠图/噪声 →Threshold+ 形态学;整块区域 →FindColorBlock*。 - 需要 与找图/OCR 对接 时,跳到对应分类阅读返回 JSON、坐标约定。
若某接口在本总览中仅有一句话说明,以该接口的独立文档为准(参数默认值、边界、性能与线程安全均以详情页为准)。
