Python实现图像批量png格式转为npy格式

前言

在进行深度学习处理时,有些的代码处理的数据格式为npy,但是常常有的数据格式为png,因此下面就用Python实现图像批量png格式转为npy格式,代码进行了详细注释。

1 png2npy

# -- coding: UTF-8 --
'''
Author: Clouds rising
Date: December, 2023
QQ: 504156006
'''import os
import glob
import numpy as np
from PIL import Image# 要修改的文件夹路径
input_dir = 'label_png'# 新文件夹的路径
output_dir = 'label_npy'# 创建输出文件夹
if not os.path.exists(output_dir):os.makedirs(output_dir)# 遍历文件夹中的所有png图像
for img_path in glob.glob(os.path.join(input_dir, '*.png')):# 打开原始的png图像img = Image.open(img_path)# 转换图像img_8bit = img.convert('L') #参数L: 8位像素,黑白# 创建一个转换表,将灰度值为255的像素点变为0'''在这一行代码中,创建了一个包含256个元素的列表(0到255的灰度值)。该列表的每个元素都通过条件判断0 if i == 255 else i 进行赋值。这意味着如果灰度值为255,那么赋值为0,否则保持不变。这样就形成了一个转换表,用于将灰度值为255的像素点变为0。'''invert_table = [0 if i == 255 else i for i in range(256)]'''在这一行代码中,通过point方法应用了之前创建的转换表。这个方法会对图像中的每个像素点进行变换,根据转换表将灰度值为255的像素点变为0,而其他灰度值保持不变。最终,得到了经过反转处理的图像img_inverted1。'''img_inverted1 = img_8bit.point(invert_table, 'L')# 将图像对象转换为NumPy数组img_array = np.asarray(img_inverted1)# 生成与输入文件相同的输出文件名output_filename = os.path.join(output_dir, os.path.basename(img_path).replace('.png', ''))# 自动保存为npy文件np.save(output_filename, img_array)

后记

大家如果有问题需要交流或者有项目需要合作,可以加Q Q :504156006详聊,加好友请留言“CSDN”,谢谢。

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

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

相关文章

新版Spring Security6.2案例 - Authentication用户名密码

前言: 前面有翻译了新版Spring Security6.2架构,包括总体架构,Authentication和Authorization,感兴趣可以直接点链接,这篇翻译官网给出的关于Authentication的Username/Password这页。 首先呢,官网就直接…

前端如何使用express写一个简单的服务

相信不少前端平常在日常工作中肯遇见过后端API接口没开发出来的时候吧 前端提升小技巧 自己使用nodejs——express ,koa,egg开发接口吧(本人比较喜欢egg和express) 今天先分享一下express 下面是一个简单的demo 1、首先咱们可以新建一个文件夹,创建一个app.js 下…

【开源软件】最好的开源软件-2023-第18名 OpenTelemetry

自我介绍 做一个简单介绍,酒架年近48 ,有20多年IT工作经历,目前在一家500强做企业架构.因为工作需要,另外也因为兴趣涉猎比较广,为了自己学习建立了三个博客,分别是【全球IT瞭望】,【…

扫雷/python中*解包作用

题目描述 在一个n行m列的方格图上有一些位置有地雷,另外一些位置为空。 请为每个空位置标一个整数,表示周围八个相邻的方格中有多少个地雷。 输入描述 输入的第一行包含两个整数n,m。 第2行到第n1行每行包含m个整数,相邻整数之间用-个空格分隔…

Keepalived+Nginx实现高可用(下)

一、背景 上篇文章介绍了基本的Keepalived的简单入门,但是针对预留的问题还有优化的空间。分别是下面3个问题: 1、如果仅仅只提供一个VIP的方式,会存在只有1台服务器处于实际工作,另外1台处于闲置状态。 势必存在成本资源浪费问题&#xff0c…

定时器Timer、多线程下的单例模式

在java中,Timer主要负责计划任务的功能,即在指定的时间开始执行某个任务。TimerTask是一个抽象类,负责封装定时任务。 1、定时器Timer的使用 schedule(TimerTask task, Date date):在指定的日期执行一次task。 schedule(TimerTask…

Android : Room 数据库的基本用法 _简单应用_二_优化

1.导入依赖 build.gradle dependencies {//Roomdef room_version "2.5.0"implementation "androidx.room:room-runtime:$room_version"annotationProcessor "androidx.room:room-compiler:$room_version"// 使用androidx版本库 ViewModelProv…

LLM之RAG实战(四):Self-RAG如何革命工业LLM

论文地址:https://arxiv.org/pdf/2310.11511.pdf Github地址:https://github.com/AkariAsai/self-rag 尽管LLM(大型语言模型)的模型和数据规模不断增加,但它们仍然面临事实错误的问题。现有的Retrieval-Augmented Gen…

js中严格模式简单介绍

ES5中增加了一种运行模式 ,严格模式。严格模式使代码在更严格的条件下运行,以消除一些JavaScript中语法不合理及怪异之处。但是在严格模式下有一些语句及语法是不能使用的,比如delete只能删除属性描述符中configurable设置为true的对象 属性…

一文讲清 QWidget 大小位置

一文讲清 QWidget 大小位置 前言 ​ QWidget 的位置基于桌面坐标系,以左上角为原点,向右x轴增加,向下y轴增加。 一、图解 ​ ​ 如上图所示,当窗口为顶层窗口时(即没有任何父窗口),系统会自…

JVM的五大分区

1.方法区 方法区主要用来存储已在虚拟机加载的类的信息、常量、静态变量以及即时编译器编译后的代码信息。该区域是被线程共享的。 2.虚拟机栈 虚拟机栈也就是我们平时说的栈内存,它是为java方法服务的。每个方法在执行的 时候都会创建一个栈帧,用于存…

数据结构学习 12字母迷宫

dfs 回溯 剪枝 这个题和dfs有关,但是我之前没有接触过,我看了这一篇很好的文章,看完之后写的答案。 我觉得很好的总结: dfs模板 int check(参数) {if(满足条件)return 1;return 0; }void dfs(int step) {判断边界{相应操作}尝试…

【JUC】二十九、synchronized锁升级之轻量锁与重量锁

文章目录 1、轻量锁2、轻量锁的作用3、轻量锁的加锁和释放4、轻量级锁的代码演示5、重量级锁6、重量级锁的原理7、锁升级和hashcode的关系8、锁升级和hashcode关系的代码证明9、synchronized锁升级的总结10、JIT编译器对锁的优化:锁消除和锁粗化11、结语 &#x1f4…

基士得耶速印机印件故障解决方法和印刷机使用注意事项

基士得耶和理光两个品牌的一体化速印机同属于理光公司的两个不同品牌。基士得耶速印机的每个机型,都有和它通用的理光速印机的机型相对应。(油墨版纸通用,外观一样,配件全部通用。)速印机在印刷的时候,经常…

USB2.0 Spec 中文篇

体系简介 线缆 USB 是一种支持热拔插的高速串行传输总线,使用一对(两根)差分信号来传输数据,半双工。要求使用屏蔽双绞线。 供电 USB 支持 “总线供电” 和 “自供电” 两种供电模式。在总线供电方式下,设备最多可…

​subprocess --- 子进程管理​

源代码: Lib/subprocess.py subprocess 模块允许你生成新的进程,连接它们的输入、输出、错误管道,并且获取它们的返回码。此模块打算代替一些老旧的模块与功能: os.system os.spawn*在下面的段落中,你可以找到关于 subprocess 模…

代理模式

接口 public interface UserService {void selectAll(); }实现类(需要增加业务) public class UserServiceImpl implements UserService{Overridepublic void selectAll() {System.out.println("查询");} }静态代理 代理类 public class Us…

选择适合微服务的编程语言

关注公众号【爱发白日梦的后端】分享技术干货、读书笔记、开源项目、实战经验、高效开发工具等,您的关注将是我的更新动力! 讨论编程语言就像是一场政治辩论。每个开发者都会过分捍卫他/她所使用的编程语言。然而,编程语言应该被看作是它们真…

Tofu目标识别跟踪模块

Tofu3 是多波段视频物体识别跟踪模块,支持可见光视频与红外视频的输入,支持激光补光变焦自适应控制,支持视频下的多类型物体检测、识别、跟踪等功能。 产品支持视频编码、设备管理、目标检测、深度学习识别、跟踪等功能,提供多机…

IPv6网络协议有什么用

IPv6是英文“Internet Protocol Version 6”(互联网协议第6版)的缩写,是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议,号称可以为全世界的每一粒沙子编上一个地址。IPv6的使用,不仅…