什么是图色脚本?
如果你第一次听说"图色脚本"这四个字,把它翻译成大白话就是:让程序像人一样去"看屏幕",然后替你把鼠标键盘点了。它是游戏自动化、桌面 RPA 里最入门、也最"看得见"的一类脚本。这篇把这个概念彻底讲清楚。
一、名字到底从哪来
"图色"是中文圈老牌叫法,拆开看就是两项最基础的定位手段:
- 图 —— 找图:拿一张提前截好的"素材小图",去当前屏幕画面里比对,看它落在哪个位置。
- 色 —— 找色:不比对整张图,而是检索画面里某个颜色值(或一段颜色范围)出现在哪里。
这套叫法从当年 大漠插件 时代就定下来了,至今还在用。
二、它到底是怎么干活的
不管多花哨,图色脚本的本质都是下面四步循环:
- 截图:抓取目标窗口(或某个区域)的像素,得到一张当前画面。
- 找图 / 找色:在画面里做模板匹配,或扫描某种颜色,算出命中点坐标 (x, y)。
- 定位:把命中结果换算成屏幕上的实际点击点(通常取素材中心)。
- 执行:调用鼠标 / 键盘模拟函数,去点按钮、去按技能。
一句话理解: 屏幕 = 输入,鼠标键盘 = 输出,中间那段"识别坐标"就是图色脚本的全部价值。
三、一个最小可运行示例(用 OpenCV 模板匹配)
下面这段代码就是"找图"的现代写法:把素材图在大图上滑一遍,取最像的位置。
import cv2
# 1) 读"素材图"(提前截好的按钮小图)和"大图"(当前屏幕)
tpl = cv2.imread("button.png") # 模板:要找的目标
screen = cv2.imread("screen.png") # 当前画面
# 2) 模板匹配:在屏幕上滑动比对,得到相似度图
res = cv2.matchTemplate(screen, tpl, cv2.TM_CCOEFF_NORMED)
# 3) 取最相似的位置(该方法越大越像,取 max)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
x, y = max_loc # 模板左上角坐标
# 4) 换算中心点,交给鼠标去点(点需要 pyautogui 等配合)
cx, cy = x + tpl.shape[1] // 2, y + tpl.shape[0] // 2
print(f"按钮中心在 ({cx}, {cy}),相似度 {max_val:.2f}")
四、它好在哪
- 不依赖游戏内部:完全从画面入手,换个游戏只要换素材就能复用。
- 门槛低:很多人学自动化的第一站就是图色,逻辑直观。
- 通用:不只是游戏,任何有界面的桌面软件都能这么批量操作(也就是 RPA 的思路)。
五、坑在哪(别踩)
- 分辨率一变就失效:缩放、改分辨率后素材全对不上,要做多尺度或重做素材。
- 颜色受环境影响:亮度、滤镜、夜晚场景会让"找色"失准——所以后来大家改用 HSV 颜色空间来抗干扰。
- 慢:要不停截图 + 比对,CPU 占用高、响应慢。
- 窗口被挡就瞎:目标窗口最小化或遮挡,它就看不见了。
六、常用工具
大漠插件(老牌,找图找色 + 字库识别)、OpenCV(matchTemplate / inRange)、按键精灵、AutoHotkey、Python + pyautogui 等。
七、和另外两种的关系
"内存脚本"是直接读内存数值,"封包脚本"是直接伪造网络请求——相比之下,图色是最温和、最不容易被反作弊针对的一种,因为它只动"屏幕",不碰进程和网络。当然代价就是又慢又脆。
合规边界: 图色技术本身是中立的(RPA、UI 自动化、批量处理都靠它)。但用它去破坏游戏公平、绕过付费或验证码,属于违规甚至违法。学习请用于合法的效率提升与自身自动化。
图色是自动化的"眼睛",看懂了它,再去看内存脚本和封包脚本,就会明白一条清晰的进阶路线:从"看屏幕"到"读数据"再到"说对话"。
