车牌识别数据集(蓝牌、黄牌、绿牌)及相关转换代码

这篇具有很好参考价值的文章主要介绍了车牌识别数据集(蓝牌、黄牌、绿牌)及相关转换代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

自己整理了一些用在车牌识别的数据集,已经人工一张一张的筛选过了,过滤掉模糊的图片、处理有歧义的区域,可以直接采用。
label为labelme的json格式,目标框是polygon多边形,好处是不同角度的车牌都能完全贴合,如图。
车牌识别数据集,python,机器学习,深度学习,YOLO,人工智能
整理了三类车牌,分别是蓝牌、绿牌、黄牌(直接点击即可下载)。
若是要进行yolo的目标检测训练,可用以下代码进行转换为yolo的darknet格式:

import json
import os
import shutil
import cv2
import os
from numpy.lib.twodim_base import triu_indices_from
import pandas as pd
from glob import glob
import codecs

print(cv2.__version__)


def getBoundingBox(points):              
    xmin = points[0][0]
    xmax = points[0][0]
    ymin = points[0][1]
    ymax = points[0][1]
    for p in points:
        if p[0] > xmax:
            xmax = p[0]
        elif p[0] < xmin:
            xmin = p[0]
        if p[1] > ymax:
            ymax = p[1]
        elif p[1] < ymin:
            ymin = p[1]
    return [int(xmin), int(xmax), int(ymin), int(ymax)]


def json2txt(json_path, midTxt_path):
    json_data = json.load(open(json_path))         
    img_h = json_data["imageHeight"]
    img_w = json_data["imageWidth"]
    shape_data = json_data["shapes"]
    shape_data_len = len(shape_data)
    img_name = os.path.split(json_path)[-1].split(".json")[0]    
    name = img_name + '.jpg'                            
    data = ''
    for i in range(shape_data_len):
        lable_name = shape_data[i]["label"]             
        points = shape_data[i]["points"]                
        [xmin, xmax, ymin, ymax] = getBoundingBox(points)
        if xmin <= 0:
            xmin = 0
        if ymin <= 0:
            ymin = 0
        if xmax >= img_w:  
            xmax = img_w - 1
        if ymax >= img_h:
            ymax = img_h - 1
        b = name + ' ' + lable_name + ' ' + str(xmin) + ' ' + str(ymin) + ' ' + str(xmax) + ' ' + str(ymax)
        print(b)
        data += b + '\n'
    with open(midTxt_path + '/' + img_name + ".txt", 'w', encoding='utf-8') as f:    
        f.writelines(data)          

def txt2darknet(midTxt_path, img_path):
    data = pd.DataFrame()
    filelist = os.listdir(midTxt_path) 
    for file in filelist:                                                   
        file_path = os.path.join(midTxt_path, file)
        filename = os.path.splitext(file)[0]
        imgName = filename + '.jpg'
        imgPath = os.path.join(img_path, imgName)
        # for path in img_path:
        #     imgPath = os.path.join(path, imgName)
        #     if not os.path.exists(imgPath):
        #         continue
        #     else:
        #         break
        
        if not os.path.exists(imgPath):
            imgName = filename + '.png'
            imgPath = os.path.join(img_path, imgName)
            if not os.path.exists(imgPath):
                imgName = filename + '.jpeg'
                imgPath = os.path.join(img_path, imgName)
        img = cv2.imread(imgPath)
        print(imgPath)
        [img_h, img_w, _] = img.shape
        data = ""
        with codecs.open(file_path, 'r', encoding='utf-8',errors='ignore') as f1:
            for line in f1.readlines():
                line = line.strip('\n')
                a = line.split(' ')
                if int(a[5]) - int(a[3]) <= 15 or int(a[4]) - int(a[2]) <= 15:
                    img[int(a[3]):int(a[5]), int(a[2]):int(a[4]), :] = (0,0,0)
                    continue
                if a[1] == 'other' or a[1] == 'del':
                    img[int(a[3]):int(a[5]), int(a[2]):int(a[4]), :] = (0,0,0)
                    continue
                if a[1] == 'plate_p':            # blue
                    a[1] = '0'
                elif a[1] == 'green_plate':      # green
                    a[1] = '1'
                elif a[1] == 'yellow_plate_s':   # yellow
                    a[1] = '2'

                x1 = float(a[2])
                y1 = float(a[3])
                w = float(a[4]) - float(a[2])
                h = float(a[5]) - float(a[3])

                # if w <= 15 and h <= 15: continue

                center_x = float(a[2]) + w / 2
                center_y = float(a[3]) + h / 2
                a[2] = str(center_x / img_w)
                a[3] = str(center_y / img_h)
                a[4] = str(w / img_w)
                a[5] = str(h / img_h)
                b = a[1] + ' ' + a[2] + ' ' + a[3] + ' ' + a[4] + ' ' + a[5]
                print(b)
                data += b + '\n'
        with open(saved_path + '/' + filename + ".txt", 'w', encoding='utf-8') as f2:    
            f2.writelines(data)

json_path = "/data/license_plate/blue"
midTxt_path = "/data/license_plate/blue/mid"
img_path = "/data/license_plate/blue"
saved_path = '/data/license_plate/save'

if not os.path.exists(midTxt_path):
    os.mkdir(midTxt_path)

filelist = os.listdir(json_path)                   
for file in filelist:
    old_dir = os.path.join(json_path, file)         
    if os.path.isdir(old_dir):
        continue                                    
    filetype = os.path.splitext(file)[1]            
    if(filetype != ".json"): continue               
    json2txt(old_dir, midTxt_path)

txt2darknet(midTxt_path, img_path)
shutil.rmtree(midTxt_path)

如果想要矩形rectangle形状的目标框的json格式,再用以下代码转换:

# -*- coding: utf-8 -*-
import json
import cv2
from glob import glob
import os


txt_path = '/license_plate/save/'   # darknet格式
saved_path = '/data/license_plate/json/'
img_path = '/data/license_plate/blue/images/'


files = glob(txt_path + "*.txt")               
# files = os.listdir(txt_path)
# print(files)
files = [i.split('/')[-1].split('.txt')[0] for i in files]
print(files)

for file in files:
    print(file)
    txt_file = txt_path + file + '.txt'
    img_file = img_path + file + '.jpg'
    if not os.path.exists(img_file):
        img_file = img_path + file + '.png'
        if not os.path.exists(img_file):
            img_file = img_path + file + '.jpeg'
    print(img_file)
    img = cv2.imread(img_file)
    # print(img)
    imgw = img.shape[1]
    imgh = img.shape[0]
    xi = []
    yi = []
    xa = []
    ya = []
    Label = []

    with open(txt_file, 'r') as f:             
        for line in f.readlines():
            line = line.strip('\n')            
            a = line.split(' ')  
            label = 'other'
            if a[0] == '0':
                label = 'plate_p'   
            elif a[0] == '1':
                label = 'green_plate'   
            elif a[0] == '2':
                label = 'yellow_plate_s'  
            
            Label.append(label)
            print(Label)

            centerx=float(a[1])*imgw
            centery=float(a[2])*imgh
            w=float(a[3])*imgw
            h=float(a[4])*imgh
            xmin = centerx - w/2
            xmax= centerx + w/2
            ymin= centery - h/2
            ymax = centery + h/2

            xi.append(xmin)
            yi.append(ymin)
            xa.append(xmax)
            ya.append(ymax)

    # for j in range(0, len(files)):
    labelme_formate = {
        "version": "4.2.9",
        "flags": {},
        "lineColor": [0, 255, 0, 128],
        "fillColor": [255, 0, 0, 128],
        "imagePath": os.path.split(img_file)[-1],
        "imageHeight": imgh,
        "imageWidth": imgw
    }
    labelme_formate['imageData'] = None
    shapes = []
    for i in range(0, len(xi)):
        s = {"label": Label[i], "line_color": None, "fill_color": None, "shape_type": "rectangle"}
        points = [
            [xi[i], yi[i]],
            [xa[i], ya[i]]
        ]
        s['points'] = points
        shapes.append(s)

    labelme_formate['shapes'] = shapes
    json.dump(labelme_formate, open(saved_path + file + ".json", 'w'), ensure_ascii=False, indent=2)
    print(saved_path + file + ".json")

欢迎私信一起学习交流!文章来源地址https://www.toymoban.com/news/detail-732566.html

到了这里,关于车牌识别数据集(蓝牌、黄牌、绿牌)及相关转换代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 检测和识别车牌的python的简单示例代码

    然后用下面的代码: 先读取一张车牌图像,将其转换为灰度图像,用Canny算法进行边缘检测。然后,用OpenCV的findContours函数找到图像中的轮廓,根据车牌的宽高比和大小进行筛选,把符合条件的车牌图像截取出来。最后,使用Tesseract OCR引擎对截取出来的车牌图像进行识别,并

    2024年02月11日
    浏览(95)
  • 如何使用 Python 检测和识别车牌(附 Python 代码)

    车牌检测与识别技术用途广泛,可以用于道路系统、无票停车场、车辆门禁等。这项技术结合了计算机视觉和人工智能。 本文将使用Python创建一个车牌检测和识别程序。该程序对输入图像进行处理,检测和识别车牌,最后显示车牌字符,作为输出内容。 要轻松地完成本教程

    2024年01月18日
    浏览(46)
  • Tensorflow车牌识别完整项目(含完整源代码及训练集)

    基于TensorFlow的车牌识别系统设计与实现,运用tensorflow和OpenCV的相关技术,实现车牌的定位、车牌的二值化、车牌去噪增强、图片的分割,模型的训练和车牌的识别等 项目问题,毕设,大创可私聊博主 目录 环境准备 思路流程 功能描述 细节阐述 项目总体框架 过程展示 技术

    2024年02月02日
    浏览(45)
  • 霍夫变换车道线识别-车牌字符识别代码(matlab仿真与图像处理系列第5期)

    当使用霍夫变换进行车道线识别时,可以按照以下步骤来编写 MATLAB 代码: 读入图像:使用 imread 函数读取包含车道线的图像。 图像预处理:为了减少噪音和突出车道线,可以对图像进行预处理。通常,可以采用以下步骤: 将图像转换为灰度图像:使用 rgb2gray 函数将彩色图

    2024年02月11日
    浏览(45)
  • 76、基于STM32单片机车牌识别摄像头图像处理扫描设计(程序+原理图+PCB源文件+相关资料+参考PPT+元器件清单等)

    单片机主芯片选择方案 方案一:AT89C51是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大。其片内的4K程序存储器是FLASH工艺的,这种单

    2024年02月12日
    浏览(55)
  • 利用resnet50模型实现车牌识别(Python代码,.ipynb和.py两种文件保存都有,可以使用jupyter或pycharm运行)

    1.代码的主要流程如下: 导入所需的库和模块。 对数据集进行可视化,随机选择一些图像进行展示。 加载图像数据集,并将图像和标签存储在数组中。 对标签进行独热编码。 划分训练集和测试集。 使用图像数据增强技术增加训练数据的多样性。 定义一些评估指标的函数。

    2024年02月05日
    浏览(60)
  • 毕业设计:YOLOv8车牌识别系统 深度学习 LPRNet算法 pytorch 大数据 (源码)✅

    毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅 感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。

    2024年02月21日
    浏览(71)
  • 基于MATLAB的车牌识别系统+GUI界面的毕业设计(完整源码+课题报告+说明文档+数据)

    近年来,随着交通现代化的发展要求,汽车牌照自动识别技术已经越来越受到人们的重视.车牌自动识别技术中车牌定位、字符切割、字符识别及后处理是其关键技术.由于受到运算速度及内存大小的限制,以往的车牌识别大都是基于灰度图象处理的识别技术.其中首先要求正确可靠

    2024年02月11日
    浏览(60)
  • 车牌识别算法 基于yolov5的车牌检测+crnn中文车牌识别 支持12种中文车牌识别

    1.单行蓝牌 2.单行黄牌 3.新能源车牌 4.白色警用车牌 5 教练车牌 6 武警车牌 7 双层黄牌 8 双层武警 9 使馆车牌 10 港澳牌车 11 双层农用车牌 12 民航车牌 效果如下: 车牌检测+关键点定位 1.第一步是目标检测,目标检测大家都很熟悉,常见的yolo系列,这里的话我用的是我修改后

    2024年02月04日
    浏览(90)
  • 【深度学习实践】基于深度学习的车牌识别(python,车牌检测+车牌识别)

    车牌识别具有广泛的应用前景,基于传统方法的车牌识别效果一般比较差,随着计算机视觉技术的快速发展,深度学习的方法能够更好的完成车牌识别任务。  本文提供了车牌识别方案的部署链接,您可以在网页上体验该模型的效果:车牌识别方案在线体验 本文介绍了使用

    2024年02月03日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包