车牌识别系统_python,opencv


有详细注释的大学生课设作品,直接下载,下载相应的包即可运行,代码中有详细注释,自带了车牌字符的训练集,可自行训练。
资源截图
代码片段和文件信息
import cv2
import numpy as np
from numpy.linalg import norm
import sys
import os
import json
from matplotlib import pyplot as plt

SZ = 20  # 训练图片长宽
MAX_WIDTH = 1000  # 原始图片最大宽度
Min_Area = 2000  # 车牌区域允许最大面积
PROVINCE_START = 1000


# 读取图片文件
def imreadex(filename):
    return cv2.imdecode(np.fromfile(filename dtype=np.uint8) cv2.IMREAD_COLOR)


def point_limit(point):
    if point[0] < 0:
        point[0] = 0
    if point[1] < 0:
        point[1] = 0

# 根据设定的阈值和图片直方图,找出波峰,用于分隔字符
def find_waves(threshold histogram):
    up_point = -1  # 上升点
    is_peak = False
    if histogram[0] > threshold:
        up_point = 0
        is_peak = True
    wave_peaks = []
    for i x in enumerate(histogram):
        if is_peak and x < threshold:
            if i - up_point > 2:
                is_peak = False
                wave_peaks.append((up_point i))
        elif not is_peak and x >= threshold:
            is_peak = True
            up_point = i
    if is_peak and up_point != -1 and i - up_point > 4:
        wave_peaks.append((up_point i))
    return wave_peaks


# 根据找出的波峰,分隔图片,从而得到逐个字符图片
def seperate_card(img waves):
    part_cards = []
    for wave in waves:
        part_cards.append(img[: wave[0]:wave[1]])
    return part_cards


# 来自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“ “浙“
]



 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-03-12 19:03  carLicense_recongnition
     文件     3645216  2018-05-26 07:39  carLicense_recongnitionsvmchinese.dat
     目录           0  2019-03-12 19:03  carLicense_recongnition.idea
     文件        9907  2019-03-12 19:01  carLicense_recongnition.ideaworkspace.xml
     文件         499  2019-03-04 17:25  carLicense_recongnition.ideacarLicense_recongnition.iml
     文件         298  2019-03-04 17:25  carLicense_recongnition.ideamodules.xml
     文件         135  2019-03-04 17:25  carLicense_recongnition.ideaencodings.xml
     文件         185  2019-03-04 17:25  carLicense_recongnition.ideamisc.xml
     文件     4595678  2018-05-26 07:39  carLicense_recongnitionsvm.dat
     文件       20971  2019-03-12 19:01  carLicense_recongnitionpredict.py
     目录           0  2019-03-12 19:03  carLicense_recongnition\__pycache__
     文件       12551  2019-03-12 17:33  carLicense_recongnition\__pycache__predict.cpython-37.pyc
     目录           0  2019-03-12 19:03  carLicense_recongnition est
     文件       52515  2018-05-26 07:39  carLicense_recongnition estwA87271.jpg
     文件      141788  2018-05-26 07:39  carLicense_recongnition estwAUB816.jpg
     文件      116063  2018-05-26 07:39  carLicense_recongnition estwATH859.jpg
     文件       24073  2018-05-26 07:39  carLicense_recongnition estlLD9016.jpg
     文件     4543569  2018-05-26 07:39  carLicense_recongnition est1.jpg
     文件       28604  2018-05-26 07:39  carLicense_recongnition estcar5.jpg
     文件       27744  2018-05-26 07:39  carLicense_recongnition estcar7.jpg
     文件     2718121  2018-05-26 07:39  carLicense_recongnition est2.jpg
     文件       62588  2018-05-26 07:39  carLicense_recongnition estcAA662F.jpg
     文件       27089  2018-05-26 07:39  carLicense_recongnition estcar3.jpg
     文件       25090  2018-05-26 07:39  carLicense_recongnition estcar4.jpg
     目录           0  2019-03-12 19:03  carLicense_recongnition rain
     文件     3336217  2018-05-26 07:39  carLicense_recongnition rainchars2.7z
     文件     1099009  2018-05-26 07:39  carLicense_recongnition raincharsChinese.7z
     文件        4038  2019-03-12 17:07  carLicense_recongnitionwindow.py
     文件         262  2018-05-26 07:39  carLicense_recongnitionconfig.js

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)