批量将PPM格式图片转化为JPG格式

将PPM格式图片转化为JPG格式

做图像识别的时候数据集常常是ppm格式的,虽然不影响建模训练,但是我们电脑往往不支持ppm格式的图像展示。
比如到做交通标志识别的时候用到的BelgiumTS交通数据集或者德国GTSRB数据集
下载后得到都是ppm格式的图像。

格式转化代码

from PIL import Image
import osinput_train_path = r"E:\test\BelgiumTSC_Training\Training"
output_train_path = r"E:\BelgiumTSC_JPG\Train_data"
input_test_path = r"E:\test\BelgiumTSC_Testing\Testing"
output_test_path = r"E:\BelgiumTSC_JPG\Test_data"def batch_image(in_dir, out_dir):if not os.path.exists(out_dir):print(out_dir, 'is not existed.')os.mkdir(out_dir)if not os.path.exists(in_dir):print(in_dir, 'is not existed.')return -1directories = [d for d in os.listdir(in_dir) if os.path.isdir(os.path.join(in_dir, d))]for d in directories:# 每一类的路径label_directory = os.path.join(in_dir, d)new_directory = os.path.join(out_dir, d)out_folder = os.path.exists(out_dir + d)if not out_folder:os.mkdir(new_directory)file_names = [os.path.join(label_directory, f) for f in os.listdir(label_directory) if f.endswith(".ppm")]# file_names is every photo which is end with ".ppm"count = 0for files in file_names:file_path, extfilename = os.path.split(files)filename, extname = os.path.splitext(extfilename)out_file = filename + '.jpg'# print(filepath,',',filename, ',', out_file)im = Image.open(files)new_path = os.path.join(new_directory, out_file)print(count, ',', new_path)count = count + 1im.save(new_path)if __name__ == '__main__':batch_image(input_test_path, output_test_path)batch_image(input_train_path, output_train_path)

转化后会保留原有的两级目录,方便建模训练。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python数据收集整理教案_数据收集整理教案讲解学习

一、数据收集整理第一课时教学目标初步体验数据收集、整理、描述的过程,会用分类数数的方法将数据整理成简单的统计表,初步认识统计表,能正确填写统计表,能从中获得简单统计的结果。通过对学生身边有趣事例的调查活动,…

hdu1873 看病要排队-优先队列

Problem Description 看病要排队这个是地球人都知道的常识。 不过经过细心的0068的观察,他发现了医院里排队还是有讲究的。0068所去的医院有三个医生(汗,这么少)同时看病。而看病的人病情有轻重,所以不能根据简单的先来…

Magicodes.IE 2.2里程碑需求和建议征集

简介Magicodes.IE是导入导出通用库,支持Dto导入导出以及动态导出,支持Excel、Word、Pdf、Csv和Html。已加入NCC开源组织。Magicodes.IE 2.0发布Github:https://github.com/dotnetcore/Magicodes.IE码云(手动同步,不维护…

启动azkaban报错_解决启动Azkaban报错问题:java.lang.NoSuchMethodError: com.google.comm

问题描述:启动Azkaban报错:java.lang.NoSuchMethodError:com.google.common.collect.ImmutableMap.toImmutableMap解决方法:从报错信息来看,是找不到toImmutableMap这个方法。首先找到类ImmutableMap对应的Jar包为guava&#xff0…

(一)tensorflow笔记:Tensor数据类型

常见的数据类型载体 listnp.arraytf.tensor list: 可以存储不同数据类型,缺点不适合存储较大的数据,如图片 np.array: 解决同类型大数据数据的载体,方便数据运算,缺点是在深度学习之前就设计好的,不支持GPU tf.ten…

吃鸡蛋-优先队列

题目描述 小林养了一只母鸡,一连 n 天,每天都可以生下若干个鸡蛋。在第 i 天,母鸡会生下 eggs[i] 个鸡蛋,这些鸡蛋将会在days[i] 天后(也就是说,第 i days[i] 天时)腐烂,变得无法食…

交通标志识别教程(二)

项目结构图 下载好项目压缩包后解压,得到以上的文件,首先将画红圈的文件删除(如果有) 安装软件 解压软件包 安装Anaconda 直接下一步,到了这个页面全部勾选,否则不会添加添加环境变量。 安装Pycharm …

深度长文:Power Automation 帮助企业实现数字化转型

01自动化始于您在Ignite 2019上,我们宣布将Flow更改为Power Automate,并在UI Flow连接器的公开预览中引入了机器人流程自动化(RPA)。我们对几种激动人心的功能感到兴奋,这些功能将在今年全面上市,并想花一点…

数字电路技术可能出现的简答题_数字电子技术复习题(本科)

1数字电子技术复习题(本科)一、简答题:1、简述组合电路和时序电路各自的特点是什么?答:组合电路的特点:任何时刻电路的稳定输出,仅取决于该时刻各个输入变量的取值,组合电路是由门电路组合而成,…

hdu2544 最短路-Floyd算法

Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们…

Pandas的Timestamp转为datetime 类型

在Pandas中我们在处理时间序列的时候常用的方法有: pd.to_datetime()pd.date_range() pandas生成时间索引 # pd.date_range() index pd.date_range("20210101",periods20) index Out[29]: DatetimeIndex([2021-01-01, 2021-01-02, 2021-01-03, 2021-…

什么样的女生适合学计算机?

我需要在这一行中加一些字数,为什么呢?因为我的字数不够300字,无法声明原创,所以我会在这里加一些字数,它们是白色的,你应该看不到,如果你此刻看到了,那你真的太机智了。300字&#…

ora-00923数据类型不一致_小白学 Python(2):基础数据类型(上)

如果我的文章对您有帮助,请关注支持下作者的公众号:极客挖掘机,获取最新干货推送:)人生苦短,我选Python引言前文传送门小白学 Python(1):开篇接触一门新的语言,肯定要先了解它的基础数据类型。啥…

Floyd最短路径算法

Floyd最短路径算法适用于节点(n<200)的图&#xff0c;允许边权值为负。 代码如下&#xff1a; #include <iostream> using namespace std; const int N 110; const int INF 1 << 30; int g[N][N]; int n, m;void Floyd() {for (int k 1; k < n; k)for (i…

如何将项目上传到github详细完整版

今天介绍如何利用pycharm创建一个新的项目&#xff0c;然后将项目上传到github&#xff0c;以便日后的学习记录&#xff0c;和版本管理。比如现在我想创建一个项目专门用来学习和研究时间序列算法。 创建虚拟环境 # 创建一个新的虚拟环境 conda create -n TimeSeries python3…

[Abp vNext微服务实践] - 搭建租户管理服务

一、简介ABP模板项目中已经提供了租户登录和管理功能&#xff0c;但是模板项目是单体应用结构&#xff0c;无法单独部署租户服务&#xff0c;所以难以满足微服务的需求。本篇文章将会介绍搭建ABP租户管理服务&#xff0c;并单独部署应用。二、创建工程2.1 创建TenantService.Ho…

hdu2544 最短路-邻接表+优先队列实现dijkstra

Problem Description 在每年的校赛里&#xff0c;所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候&#xff0c;却是非常累的&#xff01;所以现在他们想要寻找最短的从商店到赛场的路线&#xff0c;你可以帮助他们…

cli2弃用了吗 vue_vue cli - 2 升级到 3的问题汇总

基于已有项目从cli 2项目升级到cli 3项目中&#xff0c;需要修改的几项多页面更改vue.config.js配置&#xff0c; 遍历src/views目录下的所有入口文件&#xff0c;生成多个entry对象const site require(yargs).argv.siteconst glob require(glob)const path require(path)mo…

C++实现dijkstra单源最短路径算法-邻接表+优先队列

dijkstra单源最短路径算法不允许边权值为负&#xff0c;适用的图范围可以很大。 代码如下&#xff1a; #include <iostream> #include <queue> #include <vector> #include <string> using namespace std; const int N 1e8; bool done[N]; int dis[N…

编写高性能的C#代码(三)使用SPAN

原文来自互联网&#xff0c;由长沙DotNET技术社区编译。如译文侵犯您的署名权或版权&#xff0c;请联系小编&#xff0c;小编将在24小时内删除。作者介绍&#xff1a;史蒂夫戈登&#xff08;Steve Gordon&#xff09;是Microsoft MVP&#xff0c;Pluralsight的作者&#xff0c;…