46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
生成纯合成车牌(无场景背景)作为 CUT Domain A
|
|
============================================
|
|
独立于 CCPD 原图,直接调用车牌生成器渲染纯车牌图像。
|
|
"""
|
|
import sys
|
|
import os
|
|
import random
|
|
from pathlib import Path
|
|
|
|
import cv2
|
|
import numpy as np
|
|
|
|
# 路径解析:定位 chinese_license_plate_generator
|
|
_SCRIPT_DIR = Path(__file__).resolve().parent # .../CCPD_SPE_GEN/cv_pipeline/
|
|
_PROJECT_DIR = _SCRIPT_DIR.parent.parent # .../ICE_Dataset/
|
|
_GENERATOR_DIR = _PROJECT_DIR / 'chinese_license_plate_generator'
|
|
|
|
if str(_GENERATOR_DIR) not in sys.path:
|
|
sys.path.insert(0, str(_GENERATOR_DIR))
|
|
|
|
from generate_multi_plate import MultiPlateGenerator
|
|
|
|
random.seed(42)
|
|
np.random.seed(42)
|
|
|
|
g = MultiPlateGenerator(
|
|
str(_GENERATOR_DIR / 'plate_model'),
|
|
str(_GENERATOR_DIR / 'font_model')
|
|
)
|
|
|
|
out = 'gan_data/domain_A_synthetic/police_pure'
|
|
os.makedirs(out, exist_ok=True)
|
|
|
|
for i in range(500):
|
|
num, bg, _ = g.generate_plate_number()
|
|
# 强制police类型
|
|
if '警' not in num:
|
|
num = num[:6] + '警'
|
|
img = g.generate_plate_special(num, 'white', False)
|
|
cv2.imwrite(f'{out}/synth_{i:04d}.jpg', img)
|
|
|
|
print(f'Done: {out} ({len(os.listdir(out))} images)')
|