影刀RPA图像识别与处理:找图截图比颜色识别实战

📅 2026/6/18 4:18:12
影刀RPA图像识别与处理:找图截图比颜色识别实战
影刀RPA图像识别与处理找图、截图比对、颜色识别实战作者林焱 | 日期2026-06-09 | 关键词影刀RPA图像识别、找图匹配、截图比对、颜色识别、视觉自动化摘要当网页元素无法用选择器定位时图像识别是RPA的最后一道防线。本文将系统讲解影刀RPA的图像识别能力模板匹配找图、截图比对相似度检测、颜色识别、条形码/二维码识别以及如何处理分辨率变化、界面皮肤更换等实际难题。阅读收益掌握影刀RPA图像识别的4种核心方法学会处理元素捕获失效的终极方案获得5个可直接复用的图像识别实战案例理解图像识别的准确率提升技巧一、为什么需要图像识别1.1 元素捕获的局限性元素捕获失效的场景❌ 无法用选择器定位 1. 远程桌面RDP/VNC → 网页元素无法被直接捕获 → 只能看到整个桌面图像 2. 旧版桌面应用如老式ERP → 不使用标准UI框架 → 无法获取控件树 3. 游戏界面、CAD软件 → 元素捕获完全失效 → 只能通过图像识别操作 4. 网页 Canvas/Flash 内容 → 元素在Canvas内部 → 无法用XPath/CSS选择器定位 5. 界面皮肤动态变化 → 按钮位置不变但颜色/样式变化 → 选择器可能失效1.2 图像识别的适用场景判断适合图像识别✅ → 界面元素无法通过常规方式捕获 → 目标元素具有明显的视觉特征独特的图标/颜色 → 界面布局相对固定按钮位置不变 → 对准确率要求不是100%允许偶尔失败有重试机制 不适合图像识别❌ → 界面频繁变化如新闻网站首页 → 目标元素没有独特视觉特征如纯文本链接 → 对准确率要求100%金融/医疗等关键场景 → 界面分辨率/缩放比例不固定二、核心方法一模板匹配找图2.1 模板匹配的原理原理 1. 准备一张模板图片如一个按钮的截图 2. RPA对当前屏幕截图 3. 在屏幕截图中搜索模板图片的位置 4. 找到 → 返回坐标找不到 → 返回失败 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/5762d83d6f0142929befcc95953f0847.png#pic_center) 关键参数 - 相似度阈值0-1之间推荐0.8-0.9 - 搜索区域全屏 or 指定区域 - 多尺度匹配支持目标缩放±20%2.2 影刀RPA找图指令详解[找图] 指令详解 模板图片路径C:\rpa\images\submit_button.png 搜索区域 □ 全屏默认 ☑ 指定区域x, y, width, height 匹配参数 相似度阈值0.85推荐范围0.8-0.95 是否使用灰度匹配是提高抗干扰能力 多尺度匹配是支持±15%缩放 最大匹配数量1找第一个匹配的 输出 找到的位置x, y→ 保存到变量 {{match_x}}, {{match_y}} 是否找到 → 保存到变量 {{found}}2.3 实战案例远程桌面的按钮点击场景需要操作远程桌面里的旧版ERP系统元素捕获完全失效。解决方案使用图像识别点击按钮 [步骤1截取按钮模板图片] 1. 连接到远程桌面 2. 导航到目标界面 3. 使用截图工具如Snipaste截取提交按钮 4. 保存为submit_button.png建议PNG格式背景透明 [步骤2编写找图点击流程] [找图] 模板图片submit_button.png 搜索区域全屏 相似度0.85 输出变量{{found}}, {{match_x}}, {{match_y}} [条件判断] IF {{found}} True [点击位置] 坐标{{match_x}} 10, {{match_y}} 10 点击按钮中心 点击方式左键单击 ELSE [截图保存] 文件路径C:\rpa\logs\找不到按钮_{{timestamp}}.png [记录日志] 找不到提交按钮已截图保存 [抛出异常] 找不到提交按钮 [步骤3添加重试机制] [循环] 最多重试3次 [找图] ...同上 IF 找到 点击按钮 跳出循环 ELSE 等待1秒 继续循环下一次重试 [循环结束后] IF 仍然找不到 发送告警邮件给操作员 停止流程2.4 模板图片的制作技巧店群矩阵自动化突破运营极限✅ 好的模板图片特征 1. 具有独特性与其他界面元素区别明显 2. 不受背景影响尽量截取按钮本身不含背景 3. PNG格式背景透明如果按钮是规则形状 4. 尺寸适中太小 → 识别不准太大 → 容易受干扰 5. 截取稳定的状态按钮不被按下、不被禁用的状态 ❌ 不好的模板图片 1. 包含太多背景背景变化会导致匹配失败 2. 文字内容会变化如提交订单在订单提交后变成已提交 3. 颜色会变化如按钮有hover效果、按下效果 4. 尺寸太小 20×20像素 → 识别准确率大幅下降三、核心方法二截图比对相似度检测3.1 截图比对的原理原理 1. 预先截取一张标准截图如正常状态的页面 2. 运行过程中截取当前屏幕的当前截图 3. 比较两张截图的相似度 4. 相似度 阈值 → 页面状态符合预期 相似度 阈值 → 页面状态异常如弹出了错误提示 应用场景 - 验证页面是否加载完成与完成状态截图比对 - 检测是否弹出错误提示与正常状态截图比对 - 验证数据是否提交成功与提交前截图比对3.2 影刀RPA截图比对指令详解[截图比对] 指令详解 标准截图路径C:\rpa\baseline\page_loaded.png 当前截图区域 □ 全屏 ☑ 指定区域如只比对内容区排除时钟等动态元素 比对参数 相似度算法 - 像素级比对精确但受分辨率/缩放影响大 - 结构相似度SSIM推荐抗干扰能力强 - 感知哈希pHash适合检测大致相同 相似度阈值0.95推荐范围0.9-0.98 输出 相似度分数 → 保存到变量 {{similarity_score}} 是否相似 → 保存到变量 {{is_similar}}3.3 实战案例检测页面是否加载完成场景某些老旧网站没有明确的加载完成标志如没有loading消失的提示只能用图像识别判断。解决方案截图比对检测页面状态 [步骤1制作标准截图] 1. 手动导航到目标页面 2. 等待页面完全加载 3. 截取页面内容区排除顶部的时钟、动态通知等 4. 保存为page_loaded_baseline.png [步骤2编写等待页面加载流程] [子流程等待页面加载] 输入参数{{max_wait_seconds}} 30 [循环] 每2秒执行一次最多执行 {{max_wait_seconds}}/2 次 1. [截图] 截取区域页面内容区x200, y100, w1200, h800 保存为current_screenshot.png 2. [截图比对] 标准截图page_loaded_baseline.png 当前截图current_screenshot.png 算法结构相似度SSIM 阈值0.92 3. [条件判断] IF {{is_similar}} True [记录日志] 页面加载完成相似度{{similarity_score}} 返回 成功 ELSE [记录日志] 页面尚未加载完成相似度{{similarity_score}}继续等待... [等待] 2秒 [循环结束后] IF 超时仍未加载完成 [截图保存] 文件路径timeout_screenshot.png [记录日志] 页面加载超时已保存当前截图 返回 失败3.4 排除动态元素的干扰问题页面上有动态元素如时钟、滚动新闻、实时数据导致截图比对总是失败 解决方案只比对静态区域 [截图比对排除动态元素] 标准截图baseline.png 当前截图区域 ☑ 指定多个区域只选择静态内容区域 静态区域示例 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/17d3650559ad438090753b24f4ea9420.png#pic_center) 区域1页面标题栏x0, y0, w1200, h50 区域2表单区域x200, y100, w800, h500 区域3底部版权信息x0, y900, w1200, h50 动态区域排除 - 右上角时钟总是变化 - 左侧实时消息通知随时弹出 - 中间滚动新闻内容变化四、核心方法三颜色识别4.1 颜色识别的原理原理 1. 指定屏幕坐标x, y 2. 获取该坐标像素的RGB颜色值 3. 与目标颜色比较 4. 匹配 → 条件成立不匹配 → 条件不成立 应用场景 - 检测按钮是否变成可点击颜色如从灰色变成蓝色 - 检测表单验证错误如输入框变红 - 检测进度条是否完成如进度条颜色从蓝色变成绿色 - 检测系统状态如指示灯绿色正常红色异常4.2 影刀RPA颜色识别指令详解[获取颜色] 指令详解 坐标 x500 y300 或者使用变量{{target_x}}, {{target_y}} 输出 RGB颜色值 → 保存到变量 {{color_r}}, {{color_g}}, {{color_b}} 十六进制颜色值 → 保存到变量 {{color_hex}} 是否匹配目标颜色 → 保存到变量 {{color_match}} [颜色匹配] 目标颜色 方式1指定RGB值如 R0, G120, B215对应蓝色 方式2指定十六进制值如 #0078D7 容差Tolerance 0 精确匹配RGB完全相同 10 轻微容差允许每个通道±10 30 较大容差推荐用于抗锯齿/渐变色的场景4.3 实战案例检测按钮是否可点击场景某些网页表单提交按钮在表单未填写完毕时是灰色的不可点击填写完毕后变成蓝色可点击。需要检测按钮颜色来判断是否可以提交。解决方案颜色识别 [步骤1获取按钮位置] 可以用找图方法获取按钮坐标假设已经获取 {{button_x}} 500 {{button_y}} 600 [步骤2循环检测按钮颜色] [循环] 每2秒检测一次最多检测30次等待60秒 1. [获取颜色] 坐标{{button_x}} 10, {{button_y}} 10 按钮中心 输出{{color_r}}, {{color_g}}, {{color_b}} 2. [颜色匹配] 目标颜色R0, G120, B215蓝色 容差20 3. [条件判断] IF {{color_match}} True [记录日志] 提交按钮已变成可点击状态蓝色 [点击位置] {{button_x}}10, {{button_y}}10 跳出循环 ELSE [记录日志] 提交按钮仍为灰色不可点击继续等待... [等待] 2秒 [循环结束后] IF 超时仍未变成可点击状态 [记录日志] 等待超时按钮仍未激活 [截图保存] 文件路径button_timeout.png 返回 失败4.4 实战案例检测表单验证错误场景表单提交后如果验证失败输入框会变成红色边框。需要检测是否出现红色边框来判断是否提交成功。解决方案颜色识别检测错误状态 [步骤1提交表单] [点击元素] 选择器//button[text()提交] [等待] 2秒 等待表单验证 [步骤2检测是否出现红色边框] 1. [获取颜色] 坐标{{input_x}} - 2, {{input_y}} - 2 输入框左上角应该是边框位置 输出{{border_r}}, {{border_g}}, {{border_b}} 2. [颜色匹配] 目标颜色R255, G0, B0红色 容差30 3. [条件判断] IF {{color_match}} True [记录日志] 检测到红色边框表单验证失败 [获取错误信息] 使用找图方法找到错误提示图标通常是黄色感叹号 提取旁边的错误文本 [记录日志] 错误原因{{error_text}} 返回 验证失败 ELSE [记录日志] 未检测到红色边框表单提交成功 返回 成功五、核心方法四条形码/二维码识别5.1 条形码/二维码识别的原理原理 1. 截取包含条形码/二维码的图像 2. 使用专用解码库如ZXing、OpenCV解析 3. 返回解码结果字符串 应用场景 - 快递单号自动识别条形码 - 微信/支付宝收款码识别二维码 - 商品条码自动录入条形码 - 会议签到二维码扫描二维码5.2 影刀RPA条形码/二维码识别指令详解[识别条形码/二维码] 指令详解 输入 □ 从屏幕区域识别实时截图 ☑ 从图片文件识别指定路径 图片路径C:\rpa\images\barcode_sample.png 识别参数 码类型 ☑ 条形码Code128, EAN13, UPC-A等 ☑ 二维码QR Code, Data Matrix等 尝试多种类型是自动检测码类型 输出 识别成功 → 解码内容保存到变量 {{barcode_text}} 识别失败 → 错误信息保存到变量 {{barcode_error}}5.3 实战案例快递单号自动识别场景电商仓库需要手动录入快递单号到系统。使用RPA自动识别快递单上的条形码自动录入。解决方案条形码识别 [步骤1获取快递单图片] 方式A使用摄像头拍照 [调用外部程序] 打开摄像头拍照程序 [等待用户操作] 提示请拍摄快递单条形码拍摄完成后按回车继续 [获取最新文件] 目录C:\Photos\ → 最新图片保存到 {{barcode_image}} 方式B从文件选择 [打开文件对话框] 筛选器图片文件|*.png;*.jpg → 选择结果保存到 {{barcode_image}} [步骤2识别条形码] [识别条形码/二维码] 图片路径{{barcode_image}} 码类型自动检测 输出变量{{barcode_text}}, {{barcode_error}} [条件判断] IF {{barcode_text}} ! [记录日志] 条形码识别成功{{barcode_text}} [步骤3录入系统] [打开网页] URL: https://warehouse.example.com/inbound [输入文本] 选择器//input[idtracking_no] 文本{{barcode_text}} [点击元素] 选择器//button[text()查询] [等待元素出现] 选择器//div[idresult] 超时10秒 [提取文本] 选择器//div[idresult] → 保存到 {{result_text}} [记录日志] 快递单号 {{barcode_text}} 录入成功{{result_text}} ELSE [记录日志] 条形码识别失败{{barcode_error}} [截图保存] 文件路径barcode_fail.png [显示提示] 识别失败请重新拍摄或手动录入六、实战案例汇总5个图像识别应用场景6.1 场景1远程桌面的自动化操作完整方案 1. 使用找图定位所有可操作元素按钮、输入框、下拉框 2. 使用颜色识别检测操作结果如按钮是否变灰、是否出现成功提示 3. 使用截图比对验证每个步骤是否执行成功 4. 异常时截图保存发送告警邮件 关键技巧 - 远程桌面的分辨率要固定如始终使用1920×1080 - 远程桌面的颜色深度要固定如32位真彩色 - 模板图片要在相同的远程桌面环境下截取6.2 场景2游戏脚本自动化完整方案 1. 使用找图定位游戏界面中的按钮如攻击、背包 2. 使用颜色识别检测角色状态如血量条颜色绿色安全红色危险 3. 根据角色状态自动决策血量30% → 使用药水 4. 使用截图比对检测是否进入战斗/副本 ⚠️ 注意 - 游戏公司通常禁止外挂/脚本使用前请确认合规 - 本文仅供学习RPA图像识别技术请勿用于违规场景6.3 场景3CAD/工业设计软件自动化完整方案 1. CAD软件通常是桌面应用元素捕获困难 2. 使用找图定位工具栏按钮如直线、圆形、尺寸标注 3. 使用颜色识别检测是否选中了正确的图层 4. 使用截图比对验证绘制结果是否正确 关键技巧 - CAD软件有命令快捷键优先考虑用快捷键操作比图像识别更稳定 - 如必须用图像识别建议把CAD界面调成经典主题不要使用彩色主题6.4 场景4KVM切换器环境下的操作场景说明 KVM切换器允许多台电脑共用一套键盘鼠标显示器 RPA运行在一台电脑上但需要操作另一台电脑通过KVM切换 完整方案 1. 使用KVM切换器切换到目标电脑 2. 使用找图定位目标电脑屏幕上的元素 3. 使用截图比对验证切换是否成功 4. 操作完成后切换回原电脑 关键技巧 - KVM切换可能有1-2秒延迟找图前要等待足够时间 - 不同电脑的分辨率可能不同需要为每个分辨率准备一套模板图片6.5 场景5移动设备投屏后的自动化场景说明 将手机/平板投屏到电脑如使用Scrcpy、AirPlayer RPA操作电脑上的投屏窗口间接操作移动设备 完整方案 1. 启动投屏软件如Scrcpy 2. 使用找图定位手机屏幕上的App图标 3. 使用颜色识别检测App状态如微信是否有未读消息红点 4. [video(video-wm4O087e-1781724396110)(type-csdn)(url-https://live.csdn.net/v/embed/524992)(image-https://v-blog.csdnimg.cn/asset/b59aed2f01d4fe8583467562aaf4dcfd/cover/Cover0.jpg)(title-temu店群自动化报活动案例)] 5. 使用截图比对验证操作是否成功如是否成功发送消息 关键技巧 - 手机分辨率多样建议固定投屏分辨率如总是缩放到720×1280 - 手机系统iOS/Android界面不同需要分别准备模板图片七、图像识别的准确率提升技巧7.1 模板图片制作的10个最佳实践1. 使用PNG格式无损压缩 2. 背景尽量透明如果目标元素形状规则 3. 尺寸适中推荐 30×30 到 200×200 像素之间 4. 截取稳定状态不被按下、不被禁用、没有hover效果 5. 避免截取文字内容文字可能变化导致匹配失败 6. 如果必须截取文字使用OCR识别文字内容比图像匹配更可靠 7. ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3d77c3996b0d4caf98c07d777ae7e758.png#pic_center) 8. 为多分辨率准备多套模板图片如 1x, 2x, 3x 9. 定期更新模板图片界面改版后旧模板会失效 10. 给模板图片起有意义的名字如 submit_btn_blue.png, not_submit_btn_gray.png 11. 在版本控制系统中管理模板图片和流程代码一起版本化7.2 多分辨率适配方案问题同一按钮在不同分辨率下截图大小不一样导致模板匹配失败 解决方案1多尺度匹配推荐 在找图指令中启用多尺度匹配支持缩放±20% 优点不需要准备多套模板 缺点计算量大速度慢 解决方案2多套模板精确 为每种分辨率准备一套模板图片 /images/1920x1080/submit_button.png /images/1366x768/submit_button.png /images/2560x1440/submit_button.png 运行时先获取屏幕分辨率再选择对应的模板目录 优点识别准确率高 缺点需要维护多套模板 解决方案3分辨率标准化最推荐 在RPA运行前强制设置屏幕分辨率为固定值如1920×1080 Windows命令 powershell -command Set-DisplayResolution -Width 1920 -Height 1080 优点一套模板走天下 缺点需要修改系统设置可能需要管理员权限7.3 抗干扰技巧干扰因素1界面皮肤/主题变化 解决使用灰度匹配忽略颜色差异 干扰因素2按钮有hover效果鼠标移上去会变色 解决截取默认状态的按钮鼠标不在按钮上 干扰因素3背景有渐变/图案 解决使用图像的边缘检测结果进行匹配忽略背景 干扰因素4文字抗锯齿导致边缘模糊 解决降低相似度阈值如从0.95降到0.85 干扰因素5动态内容如时钟、滚动新闻 解决只比对静态区域排除动态区域八、总结与延伸学习8.1 本文知识要点知识点掌握标准相关文章模板匹配找图能独立完成远程桌面的按钮点击本文截图比对相似度检测能检测页面加载完成状态本文颜色识别能检测按钮是否可点击本文条形码/二维码识别能完成快递单号自动录入本文多分辨率适配能为3种分辨率准备模板图片本文8.2 图像识别 vs 元素捕获如何选择优先使用元素捕获✅ → 能用XPath/CSS选择器定位的坚决不用图像识别 → 原因元素捕获更准确、更快、不受分辨率影响 万不得已才用图像识别⚠️ → 元素捕获失效时远程桌面、旧版桌面应用、Canvas内容 → 原因图像识别准确率有限、速度慢、维护成本高 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/5e0817c2d7914122adb093941d2f3aaf.png#pic_center) 混合使用 推荐 → 优先尝试元素捕获 → 捕获失败时自动降级到图像识别 → 两种都失败时人工介入8.3 下期预告第46篇《影刀RPA滑块验证与验证码处理反爬虫突破实战》将深入讲解RPA在应对反爬虫机制方面的高级技巧滑块验证码、图片验证码、短信验证码、其行为验证码的识别与处理方案。附录附录A图像识别准确率测试清单测试前检查 □ 模板图片是否清晰放大200%检查边缘是否模糊 □ 是否使用了PNG格式避免使用JPG有压缩失真 □ 相似度阈值是否合理推荐0.8-0.9 □ 是否启用了灰度匹配提高抗干扰能力 □ 是否准备了多套模板不同分辨率/不同皮肤 测试中 □ 在3种不同分辨率下测试如1366×768, 1920×1080, 2560×1440 □ 在2种不同皮肤/主题下测试如浅色主题、深色主题 □ 测试动态内容干扰如页面上有时钟、滚动新闻时是否会影响识别 □ 测试执行速度单张图片识别耗时应 1秒 测试后 □ 记录准确率识别成功次数 / 总测试次数 □ 准确率 95% → 可以投产 □ 准确率 90-95% → 需要增加重试机制 □ 准确率 90% → 需要优化模板图片或调整参数附录B常用图像识别工具的对比工具/库优点缺点适用场景影刀RPA内置找图可视化配置上手简单功能相对基础简单按钮查找OpenCV模板匹配功能强大支持多尺度需要写代码复杂图像识别Tesseract OCR开源免费支持多语言准确率一般文字识别百度OCR API准确率高支持多种场景需要付费高精度文字识别ZXing条形码开源免费支持多种码制图像质量差时准确率下降条形码/二维码识别如果本文对你有帮助欢迎点赞、收藏、转发有任何问题可以在评论区留言我会一一解答。