You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python做图片augmentation 让生成的车牌图片模拟真实效果

实现车牌真实化增强并批量保存的方案

前置依赖

首先安装所需的Python工具库:

pip install opencv-python albumentations numpy

实现逻辑

我们通过模拟真实场景中车牌会遇到的各类干扰效果来完成增强,覆盖的常见真实场景包括:

  • 拍摄角度倾斜带来的透视、仿射形变
  • 车辆移动、对焦不准带来的运动模糊、高斯模糊
  • 不同光照条件下的亮度、对比度、色彩偏移
  • 摄像头传感器带来的各类噪声
  • 车牌落灰、掉漆、杂物遮挡、雨水冲刷等污渍效果

可直接运行的实现代码

替换代码中的输入、输出文件夹路径为你自己的本地路径即可运行:

import cv2
import os
import albumentations as A

# 自定义路径配置
INPUT_FOLDER = "替换为你存放原始生成车牌的文件夹路径"
OUTPUT_FOLDER = "替换为你要存放增强后车牌的文件夹路径"

# 自动创建输出文件夹
os.makedirs(OUTPUT_FOLDER, exist_ok=True)

# 定义真实化增强流水线,可根据需求调整各变换的触发概率、参数范围
transform = A.Compose([
    # 模拟角度倾斜形变
    A.Perspective(scale=(0.05, 0.12), keep_size=True, p=0.7),
    A.Affine(rotate=(-12, 12), shear=(-6, 6), p=0.6),
    # 模拟拍摄模糊
    A.OneOf([
        A.GaussianBlur(blur_limit=(3, 7), p=0.5),
        A.MotionBlur(blur_limit=(3, 9), p=0.5),
    ], p=0.6),
    # 模拟传感器噪声
    A.OneOf([
        A.GaussNoise(var_limit=(10.0, 50.0), p=0.5),
        A.ISONoise(intensity=(0.1, 0.3), p=0.5),
        A.SaltAndPepper(noise_limit=0.01, p=0.3),
    ], p=0.5),
    # 模拟光照变化
    A.RandomBrightnessContrast(brightness_limit=(-0.3, 0.3), contrast_limit=(-0.2, 0.2), p=0.7),
    A.HueSaturationValue(hue_shift_limit=10, sat_shift_limit=20, val_shift_limit=10, p=0.5),
    # 模拟污渍、遮挡
    A.RandomShadow(shadow_roi=(0, 0, 1, 1), num_shadows_lower=1, num_shadows_upper=2, shadow_dimension=4, p=0.3),
    A.RandomRain(drop_length=1, blur_value=1, p=0.2),
])

# 批量处理所有图片
for filename in os.listdir(INPUT_FOLDER):
    # 过滤非图片文件,可按需补充支持的格式
    if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp')):
        input_path = os.path.join(INPUT_FOLDER, filename)
        output_path = os.path.join(OUTPUT_FOLDER, filename)
        # 读取图片
        img = cv2.imread(input_path)
        if img is None:
            continue
        # 执行增强
        augmented = transform(image=img)
        aug_img = augmented["image"]
        # 保存处理后的图片
        cv2.imwrite(output_path, aug_img)

参数调整说明

你可以根据自己的真实效果需求修改增强管道的参数:

  • 变换项的p参数代表该变换被触发的概率,取值范围0到1,值越大越容易触发
  • 各类变换的数值范围可以按需调整,比如想要更大的倾斜角度就调大Affine的rotate参数范围
  • 不需要的变换项直接删除即可

内容的提问来源于stack exchange,提问作者k_p

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 19:06:03