本文最后更新于76 天前,其中的信息可能已经过时,如有错误请发送邮件到[email protected]
每帧GIF都会隐藏一个字母,直接识别无法获取完整验证码字符
这里提供一种思路:
将GIF每一帧重叠合并转换为一张静态图片,再正常对静态图片识别即可
🎉 效果
原图:

处理后:

✨ Python代码:
调用main,传入GIF图片路径,输出的图片保存路径
# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
from PIL import Image, ImageSequence
import numpy as np
def main(gif_path, output_path):
"""
将 GIF 的每一帧进行重叠合并,生成一张静态图片。
参数:
gif_path (str): 输入 GIF 文件路径(如"C:\Users\Administrator\Desktop\1.png")。
output_path (str): 输出静态图片路径(如 C:\Users\Administrator\Desktop\2.png)。
"""
with Image.open(gif_path) as gif:
frames = []
for frame in ImageSequence.Iterator(gif):
frame = frame.convert('RGBA')
frames.append(frame)
if not frames:
raise ValueError("GIF 文件中没有找到任何帧。")
width, height = frames[0].size
base_image = frames[0].copy()
frame_arrays = [np.array(frame) for frame in frames]
avg_array = np.mean(frame_arrays, axis=0).astype(np.uint8)
result_image = Image.fromarray(avg_array, 'RGBA')
if output_path.lower().endswith(('.jpg', '.jpeg')):
result_image = result_image.convert('RGB')
result_image.save(output_path)
print(f"✅ 已保存重叠合并后的图片到: {output_path}")

