text: #!/usr/bin/env python3
  # -*- coding: utf-8 -*-
  __author__ = 'david.tang'
  
  import cv2
  import numpy as np
  from numpy.linalg import norm
  
  SZ = 20  # 训练图片长宽
  MAX_WIDTH = 1000  # 原始图片最大宽度
  Min_Area = 2000  # 车牌区域允许最大面积
  PROVINCE_START = 1000
  # 来自opencv的sample，用于svm训练
  def deskew(img):
      m = cv2.moments(img)
      if abs(m['mu02']) < 1e-2:
          return img.copy()
      skew = m['mu11'] / m['mu02']
      M = np.float32([[1, skew, -0.5 * SZ * skew], [0, 1, 0]])
      img = cv2.warpAffine(img, M, (SZ, SZ), flags=cv2.WARP_INVERSE_MAP | cv2.INTER_LINEAR)
      return img
  
  
  # 来自opencv的sample，用于svm训练
  def preprocess_hog(digits):
      samples = []
      for img in digits:
          gx = cv2.Sobel(img, cv2.CV_32F, 1, 0)
          gy = cv2.Sobel(img, cv2.CV_32F, 0, 1)
          mag, ang = cv2.cartToPolar(gx, gy)
          bin_n = 16
          bin = np.int32(bin_n * ang / (2 * np.pi))
          bin_cells = bin[:10, :10], bin[10:, :10], bin[:10, 10:], bin[10:, 10:]
          mag_cells = mag[:10, :10], mag[10:, :10], mag[:10, 10:], mag[10:, 10:]
          hists = [np.bincount(b.ravel(), m.ravel(), bin_n) for b, m in zip(bin_cells, mag_cells)]
          hist = np.hstack(hists)
  
          # transform to Hellinger kernel
          eps = 1e-7
          hist /= hist.sum() + eps
          hist = np.sqrt(hist)
          hist /= norm(hist) + eps
  
          samples.append(hist)
      return np.float32(samples)
  
  
  provinces = [
      "zh_cuan", "川",
      "zh_e", "鄂",
      "zh_gan", "赣",
      "zh_gan1", "甘",
      "zh_gui", "贵",
      "zh_gui1", "桂",
      "zh_hei", "黑",
      "zh_hu", "沪",
      "zh_ji", "冀",
      "zh_jin", "津",
      "zh_jing", "京",
      "zh_jl", "吉",
      "zh_liao", "辽",
      "zh_lu", "鲁",
      "zh_meng", "蒙",
      "zh_min", "闽",
      "zh_ning", "宁",
      "zh_qing", "青",
      "zh_qiong", "琼",
      "zh_shan", "陕",
      "zh_su", "苏",
      "zh_sx", "晋",
      "zh_wan", "皖",
      "zh_xiang", "湘",
      "zh_xin", "新",
      "zh_yu", "豫",
      "zh_yu1", "渝",
      "zh_yue", "粤",
      "zh_yun", "云",
      "zh_zang", "藏",
      "zh_zhe", "浙"
  ]
  
  
  
  