ICE Plate Swap — C++ 高性能特殊车牌替换引擎
基于 CCPD 真实街景照片,将普通蓝牌替换为 9 种特殊车牌。
C++ / OpenCV 实现,32 线程满血,~53 张/秒。
快速开始
1. 环境要求
| 组件 | 说明 |
|---|---|
| Windows 10/11 x64 | — |
| Visual Studio 2022 BuildTools | 含 C++ 桌面开发 workload |
| OpenCV 4.10.0 | 解压到 C:\opencv |
2. 预编译版 (推荐)
直接下载 plate_swap.exe(已通过 Git LFS 管理):
# 设置 OpenCV DLL 路径
$env:PATH = "C:\opencv\build\x64\vc16\bin;$env:PATH"
# 运行
.\install\plate_swap.exe --help
3. 从源码编译
# 打开 VS Developer Command Prompt
# 然后:
cd CCPD_SPE_GEN\cpp_pipeline
cmake -B build -G "Visual Studio 17 2022" -A x64 -DOpenCV_DIR=C:\opencv\build
cmake --build build --config Release --parallel
用法
$env:PATH = "C:\opencv\build\x64\vc16\bin;$env:PATH"
.\plate_swap.exe `
--ccpd-dir ./CCPD/CCPD2019/ccpd_base,./CCPD/CCPD2019/ccpd_tilt `
--plate-type police `
--plate-pool ./output/plate_pool_v2 `
--output ./CCPD_SPE `
--num 1000 `
--workers 24
参数
| 参数 | 必需 | 默认 | 说明 |
|---|---|---|---|
--ccpd-dir |
✅ | — | CCPD 图片目录,多个用逗号分隔 |
--plate-type |
✅ | — | 特殊车牌类型 |
--plate-pool |
✅ | — | 预生成车牌池路径(含 pool.bin) |
--output |
✅ | — | 输出根目录 |
--num |
500 | 生成图片数量 | |
--workers |
全部核心 | 并行线程数 | |
--seed |
42 | 随机种子 | |
--fast |
false | 快速模式(跳过退化模拟,不建议) | |
--h-shift |
0 | 底板色相偏移 (GUI调色) | |
--s-scale |
100 | 底板饱和度缩放% | |
--v-scale |
100 | 底板明度缩放% |
支持的类型
police 警用车牌 (白底, JING)
army 军车/武警 (白底)
gangao 港澳入出境 (黑底, GANG/AO)
shiguan_old 使馆旧版 (黑底, SHI)
shiguan_new 使馆新版 (黑底)
lingguan_old 领馆旧版 (黑底, LING)
lingguan_new 领馆新版 (黑底)
coach 教练车 (黄底, XUE)
new_energy 大型新能源 (黄绿双拼, 8位)
预生成车牌池
cd ICE_Dataset
python CCPD_SPE_GEN\cpp_pipeline\gen_plate_pool.py --num 1000 --output ./output/plate_pool_v2
生成 pool.bin (~1.6GB),含 9 种类型各 1000 张 + 车牌号元数据。
输出结构
CCPD_SPE/
├── ccpd_base/
│ ├── police/
│ ├── gangao/
│ └── ...
├── ccpd_tilt/
└── ...
文件名: {CCPD原名}__{类型}__{车牌号拼音}.jpg
性能
| 指标 | 值 |
|---|---|
| 单线程 | ~7 张/秒 |
| 24 线程 | ~53 张/秒 |
| 35.5 万张全量 | ~1.9 小时 |
调色 GUI
python CCPD_SPE_GEN\cv_pipeline\color_tuner.py
H/S/V 滑块实时预览 → 按 S 保存 → plate_color_profile.py → C++ 管线 --h-shift --s-scale --v-scale 读取。
构建
# 安装 OpenCV
Invoke-WebRequest "https://github.com/opencv/opencv/releases/download/4.10.0/opencv-4.10.0-windows.exe" -OutFile "$env:TEMP\opencv.exe"
Start-Process "$env:TEMP\opencv.exe" -Args "-oC:\opencv -y" -Wait
# 编译
cd CCPD_SPE_GEN\cpp_pipeline
.\build.ps1