今天需要用到一个交通标志牌(GTSRB数据集),但是数据都是ppm格式的,虽说用PIL模块也是可以直接打开的,但是不利于直接查看很不方便,所以这里打算做一个转化处理。

首先是从网上下载到所需的数据集,下载地址在这里。截图如下所示:

这里想要先去吐槽一下,找了好几遍才找到了数据集的下载链接,这也太不起眼了吧,我红框标出来了。

点击跳转到了下载页面后就可以进行下载了,下面是需要下载的数据集:

当然了,如果不在乎的话也是可以直接全部下载的。

下载后直接解压缩会得到如下文件结构:

我们简单看下测试数据集:

可以看到:一共有12630张测试图像,除此之外还有一个csv文件,存放没一张图片的ROI数据,训练集也是同样的组成,接下来我们直接来进行数据解析处理,代码实现如下所示:

#!usr/bin/env python
#encoding:utf-8
from __future__ import division'''
__Author__:沂水寒城
功能: GTSRB数据集解析处理
'''import os
import PIL
import numpy as np
import pandas as pd
import matplotlib.pyplot as pltdef convertTrainData(dataDir='data/GTSRB/Final_Training/Images/',saveDir='dataset/train/'):'''训练数据集转化处理'''labelDir=os.listdir(dataDir)for label in labelDir:oneDir=dataDir+label+'/'oneSaveDir=saveDir+label+'/'if not os.path.exists(oneSaveDir):os.makedirs(oneSaveDir)for one_file in os.listdir(oneDir):if one_file.endswith(".csv"):csvFile=os.path.join(oneDir,one_file)csv_data=pd.read_csv(csvFile)csv_data_array=np.array(csv_data)for i in range(csv_data_array.shape[0]):csv_data_list=np.array(csv_data)[i,:].tolist()[0].split(";")one_ppm=os.path.join(oneDir,csv_data_list[0])img=PIL.Image.open(one_ppm)box=[int(csv_data_list[3]),int(csv_data_list[4]),int(csv_data_list[5]),int(csv_data_list[6])]img=img.crop(box)one_save_path=oneSaveDir+str(len(os.listdir(oneSaveDir))+1)+'.png'img.save(one_save_path)def convertTestData(dataDir='data/GTSRB/Final_Test/Images/',saveDir='dataset/test/'):'''测试数据集转化处理'''if not os.path.exists(saveDir):os.makedirs(saveDir)file_list=os.listdir(dataDir)for one_file in file_list:if one_file.endswith(".csv"):csvFile=os.path.join(dataDir,one_file)csv_data=pd.read_csv(csvFile)csv_data_array=np.array(csv_data)for i in range(csv_data_array.shape[0]):csv_data_list=np.array(csv_data)[i,:].tolist()[0].split(";")one_ppm=os.path.join(dataDir,csv_data_list[0])img=PIL.Image.open(one_ppm)box=[int(csv_data_list[3]),int(csv_data_list[4]),int(csv_data_list[5]),int(csv_data_list[6])]img=img.crop(box)one_save_path=saveDir+str(len(os.listdir(saveDir))+1)+'.png'img.save(one_save_path)if __name__ == "__main__":convertTrainData(dataDir='data/GTSRB/Final_Training/Images/',saveDir='dataset/train/')convertTestData(dataDir='data/GTSRB/Final_Test/Images/',saveDir='dataset/test/')

执行,等待一会后,看下处理好的数据集:
         首先是【训练集】:

接下来是【测试集】:

完成上述的数据解析存储处理之后就可以进行后续的建模分析了。

Python实现交通标志牌(GTSRB数据集)解析处理相关推荐

  1. python labelImg xml 格式的数据集解析及可视化

    1.XML 格式分析 需要关注的一般只有: filename :图片名称 size:width,heights 图片尺寸 object:图片中标注的目标,可能含有多个目标,这个xml就有2个标注目标 ...

  2. python如何导入txt数据集-终于找到python入门到实践数据集

    Python是一款功能强大的脚本语言,具有丰富和强大的库,重要的是,它还具有很强的可读性,易用易学,非常适合编程初学者入门.以下是小编为你整理的python入门到实践数据集 环境配置:下载Python ...

  3. S3DIS数据集解析为点云

    S3DIS数据集解析为点云 S3DIS数据集解析 数据格式 1.直接解析pointcloud.mat文件 2.通过data文件夹中的pose合成rgb和depth 个人解析代码GitHub:https ...

  4. 机器学习 学习曲线 Python实现学习曲线及案例解析

    机器学习 学习曲线 Python实现学习曲线及案例解析 学习曲线 如果数据集的大小为 mmm,则通过下面的流程即可画出学习曲线: 把数据集分成训练数据集和交叉验证数据集. 取训练数据集的 20%20\ ...

  5. 【机器学习入门】(13) 实战:心脏病预测,补充: ROC曲线、精确率--召回率曲线,附python完整代码和数据集

    各位同学好,经过前几章python机器学习的探索,想必大家对各种预测方法也有了一定的认识.今天我们来进行一次实战,心脏病病例预测,本文对一些基础方法就不进行详细解释,有疑问的同学可以看我前几篇机器学习 ...

  6. 【机器学习入门】(8) 线性回归算法:正则化、岭回归、实例应用(房价预测)附python完整代码和数据集

    各位同学好,今天我和大家分享一下python机器学习中线性回归算法的实例应用,并介绍正则化.岭回归方法.在上一篇文章中我介绍了线性回归算法的原理及推导过程:[机器学习](7) 线性回归算法:原理.公式 ...

  7. 【机器学习入门】(5) 决策树算法实战:sklearn实现决策树,实例应用(沉船幸存者预测)附python完整代码及数据集

    各位同学好,今天和大家分享一下python机器学习中的决策树算法,在上一节中我介绍了决策树算法的基本原理,这一节,我将通过实例应用带大家进一步认识这个算法.文末有完整代码和数据集,需要的自取.那我们开 ...

  8. 【机器学习入门】(3) 朴素贝叶斯算法:多项式、高斯、伯努利,实例应用(心脏病预测)附python完整代码及数据集

    各位同学好,今天我和大家分享一下朴素贝叶斯算法中的三大模型.在上一篇文章中,我介绍了朴素贝叶斯算法的原理,并利用多项式模型进行了文本分类预测. 朴素贝叶斯算法 -- 原理,多项式模型文档分类预测,附p ...

  9. python中url是什么_怎么在Python中实现URL的解析

    怎么在Python中实现URL的解析 发布时间:2020-08-24 17:56:47

  10. Python 获取接口数据,解析JSON,写入文件

    Python 获取接口数据,解析JSON,写入文件 用于练手的例子,从国家气象局接口上获取JSON数据,将它写入文件中,并解析JSON: 总的来说,在代码量上,python代码量要比java少很多.而 ...

最新文章

  1. 从 ThinkPHP 开发规范 看 PHP 的命名规范和开发建议
  2. Retrofit与RXJava整合
  3. vscode 头文件包含问题_使用clangd替代c/c++配置vscode c++项目
  4. Oracle学习笔记:手工注册oracle的oledb驱动
  5. Gridview DetailView
  6. 脚本之家python专题_一个简单的python读写文件脚本
  7. sharedassets0_Unity3D研究院之mac上从.ipa中提取unity3D游戏资源(六十六)
  8. 单片机数字电路-protues之74HC573演示
  9. 【算法千题案例】每日LeetCode打卡——68.反转字符串中的元音字母
  10. 3D建模刚学如何入手制作角色模型,需要学习哪些软件?
  11. vue 超出三行隐藏_文字超出三行省略...显示全文
  12. Java内存模型(JMM)详解
  13. Android逆向-APP破解练习(一)
  14. 2019-2020 ICPC Asia Hong Kong Regional Contest
  15. 如何把数据分类后各个行的值合并成一个格
  16. 最牛散户最新版唐亮一年获利超3亿
  17. python_day05(笔记及练习)
  18. 民宿管理软件免费的就是最好的吗?
  19. R语言 cannot take a sample larger than the population when ‘replace = FALSE‘
  20. 整理你房间的Top10项资源和灵感。。。

热门文章

  1. 在边缘计算大热的背景下,为何Akamai敢说自己就是边缘
  2. 基于nodejs的模拟数据分发服务
  3. @EnableWebMVC注解理解
  4. 简单说 !![]==true 与 []==true 引发的思考
  5. UVALive5910 UVA1641 POJ4022 ASCII Area【趣味程序+输入输出】
  6. 管理例程——数据库管理员
  7. 如何使用Orchard搭建敏捷个人的网站(2)
  8. 孙鑫mfc学习笔记第十二课
  9. 《图解HTTP》读书笔记(二:各种协议与HTTP协议之间的关系)
  10. 在C#中使用SQL语句什么情况需要使用‘单引号’和“双引号”