Python实现图片与数组的转化

将rgb三通道的图片以数组的形式保存 ## process the image into array[] and save as pickle #把图片转换为数组的形式 from __future__ import print_function import numpy as np import PIL.Image as Image import pickle as p import matplotlib.pyplot as pyp... 阅读详情

链接:https://blog.youkuaiyun.com/code_better/article/details/53242943

作者:石炜贤&曾翔钰

cifar-10这个数据相信很多接触过机器学习的人都肯定有所了解。今天,我们通过cifar-10存储将图片转化为可训练数据的思路将我们自己的图片转化为Python格式的数据。

本篇文章主要实现两个功能: 
①图片转化为数组并存为二进制文件; 
②从二进制文件中读取数据并重新恢复为图片

图片大小为32*32。现在我们来聊聊步骤: 
①图片转化为数组并存为二进制文件: 
1.使用PIL打开图片,并将其分离为RGB三个通道 
2.利用numpy分别将RGB三个通道转化为数组并将其转为一维数组 (32*32->1024) 
3.将RGB三个一维数组(1024)拼接成一个一维数组(3072),再接入大数组,最终形成n*3072的一维数组,最终在reshape成n行3072列的二维数组 
4.使用pickle序列化数组对象并保存到文件里

②从二进制文件中读取数据并重新恢复为图片: 
1.打开数据文件并使用pickle加载并反序列化数据得到数组 
2.使用PIL分别得到每张图片的RGB通道,然后将其合并 
3.使用matplotlib显示图像 
4.保存图像

来一波代码(这里Python版本为2.7,不过3.x的应该问题也不大):

# encoding:utf-8
"""
关于图片的一些操作:
①图片转化为数组并存为二进制文件;
②从二进制文件中读取数据并重新恢复为图片
"""

from __future__ import print_function
import numpy as np
import PIL.Image as Image
import pickle as p
import matplotlib.pyplot as pyplot


class Operation(object):
    image_base_path = "../images/"
    data_base_path = "../data/"

    def image_to_array(self, filenames):
        """
        图片转化为数组并存为二进制文件;
        :param filenames:文件列表
        :return:
        """
        n = filenames.__len__()  # 获取图片的个数
        result = np.array([])  # 创建一个空的一维数组
        print("开始将图片转为数组")
        for i in range(n):
            image = Image.open(self.image_base_path + filenames[i])
            r, g, b = image.split()  # rgb通道分离
            # 注意:下面一定要reshpae(1024)使其变为一维数组,否则拼接的数据会出现错误,导致无法恢复图片
            r_arr = np.array(r).reshape(1024)
            g_arr = np.array(g).reshape(1024)
            b_arr = np.array(b).reshape(1024)
            # 行拼接,类似于接火车;最终结果:共n行,一行3072列,为一张图片的rgb值
            image_arr = np.concatenate((r_arr, g_arr, b_arr))
            result = np.concatenate((result, image_arr))

        result = result.reshape((n, 3072))  # 将一维数组转化为count行3072列的二维数组
        print("转为数组成功,开始保存到文件")
        file_path = self.data_base_path + "data2.bin"
        with open(file_path, mode='wb') as f:
            p.dump(result, f)
        print("保存文件成功")

    def array_to_image(self, filename):
        """
        从二进制文件中读取数据并重新恢复为图片
        :param filename:
        :return:
        """
        with open(self.data_base_path + filename, mode='rb') as f:
            arr = p.load(f)  # 加载并反序列化数据
        rows = arr.shape[0]
        arr = arr.reshape(rows, 3, 32, 32)
        for index in range(rows):
            a = arr[index]
            # 得到RGB通道
            r = Image.fromarray(a[0]).convert('L')
            g = Image.fromarray(a[1]).convert('L')
            b = Image.fromarray(a[2]).convert('L')
            image = Image.merge("RGB", (r, g, b))
            # 显示图片
            pyplot.imshow(image)
            pyplot.show()
            image.save(self.image_base_path + "result" + str(index) + ".png", 'png')

if __name__ == "__main__":
    my_operator = Operation()
    images = []
    for j in range(5):
        images.append(str(j) + ".png")
    my_operator.image_to_array(images)
    my_operator.array_to_image("data2.bin")

 

python 图片 numpy合并,在Python中将3个单独的numpy数组合并为RGB图像 So I have a set of data which I am able to convert to form separate numpy arrays of R, G, B bands. Now I need to combine them to form an RGB image.I tried 'Image' to do the job but it requires 'mode' ... 阅读详情

相关推荐

根据存有RGB值的一维数组生成Image

package test; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Lis

meiyoutongguo的专栏 1507

Python - 将图片转化成numpy数组

from PIL import Image import numpy as np image = Image.open("/home/yang/图片/dog.jpg") # 用PIL中的Image.open打开图像 image_arr = np.array(image) # 转化成numpy数组

weixin_36670529的博客 1万+

手写数字识别案例、手写数字图片处理

python_手写数字识别案例、手写数字图片处理 #1、手写数字识别案例 步骤: 收集数据 带有标签的训练数据集来源于trainingDigits文件夹里面所有的文件,接近2000个文件,每个文件中有32*32的二维数组,由01构成,文件名称就是该文件数据对应的标签类型(即一个数字)。 处理数据使其符合算法要求 最终我们要求是一个二维数组作为数据源,所以需要将每一个文件对应的特征数据处理成一行,...

qq_41367445的博客 3187

图像处理(九)-图片和数组的转换

图像处理(九)图片和数组的转换,​ 在深度学习过程中,往往需要制作自己的数据集,相关论文中的现成的数据集尽管可以用来直观地感受算法的效果,但是与自己的项目需求都是有一定出入的。在有大量的图片样本时,我们首先需要读取图片,将其转化为numpy数组,并在控制台打印出来,直观地看到图片对应的矩阵是什么样子的。 ​

am_student的博客 1万+

python中frida的安装+frida-server(雷电模拟器)保姆级安装教程

frida的安装,安卓逆向,adb

2301_80224944的博客 4579

Codex CLI 接入智谱 GLM-5.1 完整教程

Codex CLI 是 OpenAI 推出的命令行 AI 编程工具,支持自主读取文件、执行命令、编写代码等操作,是目前最火的终端 AI 编程工具之一。通过 CLIProxyAPI 代理,我们成功将 Codex CLI 与智谱 GLM-5.1 模型对接,核心在于解决 Responses API 与 Chat Completions API 的协议转换问题。✅成熟稳定:CLIProxyAPI 社区活跃(4.7k fork),持续维护✅完整兼容:支持流式/非流式、function calling✅低成本。

u011831527的博客 2573

Python实现图片与数组转化

本文转自: https://blog.youkuaiyun.com/code_better/article/details/53242943 本篇文章主要实现两个功能:  ①图片转化为数组并存为二进制文件;  ②从二进制文件中读取数据并重新恢复为图片 图片大小为32*32。现在我们来聊聊步骤:  ①图片转化为数组并存为二进制文件:  1.使用PIL打开图片,并将其分离为RGB三个通道  2.利用nump...

qq_39709535的博客 1万+

C#上位机通信层封装:西门子S7NetPlus库的优雅使用

支持S7-1200/1500(机架号0,槽号1)、S7-300/400(机架号/槽号需根据实际配置);支持位(Bit)、字节(Byte)、字(Word)、双字(DWord)、浮点数(Float/Double)等数据类型的读写;支持DB块、输入寄存器(I)、输出寄存器(Q)、内存寄存器(M)、定时器(T)、计数器(C)的操作;轻量无依赖,兼容.NET 5+。首先定义核心枚举和常量,统一规范参数类型,避免硬编码。/// 西门子PLC型号(对应不同的机架/槽号默认配置)

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1085

Python实现图片与数组的转化1

作者:石炜贤&曾翔钰 cifar-10这个数据相信很多接触过机器学习的人都肯定有所了解。今天,我们通过cifar-10存储将图片转化为可训练数据的思路将我们自己的图片转化为Python格式的数据。 本篇文章主要实现两个功能: ①图片转化为数组并存为二进制文件; ②从二进制文件中读取数据并重新恢复为图片 图片大小为32*32。现在我们来聊聊...

qq_32790593的博客 1058

6、哈代空间、算子函数及相关概念解析

本文深入探讨了数学中哈代空间与算子函数的核心概念,包括强函数的因式分解、半单零点的定义与性质、Blaschke-Potapov乘积的存在性、Nagy-Foias模型算子的结构与谱分析、可数集合的相关性质(如Carlesonian集合、稀有集合等)、简单分式族的可分性与基性质,以及指数型整函数的增长特性。文章还分析了这些数学对象之间的内在联系,并通过图表与表格形式直观呈现了集合性质与函数空间结构的关系。这些理论不仅在数学分析和泛函分析中具有重要意义,也在信号处理、量子力学等应用领域具有广泛价值。

yhn4567890的博客 169

R数据分析:潜在转化分析LTA的做法和解释(一)

之前给大家写了很多潜在类别分析的教程Mplus教程:如何做潜在类别分析LCAR数据分析:用R语言做潜类别分析LCAMplus数据分析:潜在类别分析(LCA)流程(详细版)R数据分析:再写潜在类别分析LCA的做法与解释,今天继续给大家拓展一步。 今天要介绍的就是潜在转换分析,这个东西就是LCA的纵向版本。是一个专门用来研究质变的统计技巧。有一句话叫做量变起质变,你怎么知道质变到底发生没有?就用潜在转换分析。 Latent transition analysis is an extension of...

Codewar的博客 7703

python入门指南(十二)python将图片转化为数组

交流qq群:651587317 1、转化为数组 -*- coding: utf-8 -*- from PIL import Image from pylab import * #读取图片并转为数组 im = array(Image.open("C:\\Users\\Administrator\\Desktop\\22.png")) #输出数组的各维度长度以及类型 print im.shap...

linbossdeboke的博客 1万+

ArcGIS Pro 3.4 二次开发 - 知识图谱

本文介绍了在ArcGIS Pro SDK 3.4和.NET 8环境下操作知识图谱的方法。主要包含两大功能模块:1) 知识图谱数据存储操作,包括建立连接、获取图层、检索要素类与表定义、ID转换等;2) 知识图谱数据模型管理,如获取数据模型属性、标识符信息等。代码示例详细展示了如何使用C#通过QueuedTask异步任务与知识图谱服务交互,包括异常处理、数据转换等常见操作场景。所有示例均采用using语句确保资源释放,并遵循ArcGIS Pro SDK的最佳实践。

Winemonk 763

python将数组转化为图片_python入门指南(十二)python将图片转化为数组

交流qq群:6515873171、转化为数组-*- coding: utf-8 -*-from PIL import Imagefrom pylab import *#读取图片并转为数组im = array(Image.open("C:\\Users\\Administrator\\Desktop\\22.png"))#输出数组的各维度长度以及类型print im.shape,im.dtype#输...

weixin_32287387的博客 1853

复现论文《孤岛微电网环境下基于物理模型引导的深度强化学习VSG频率控制方法》

本文提出了一种结合物理模型与深度强化学习的孤岛微电网VSG频率控制方法。通过建立VSG小信号模型并设计可变系数控制器,将物理知识融入深度强化学习框架,解决了高维参数和机组耦合带来的控制难题。复现代码实现了三个核心组件:VSGSmallSignalModel建模VSG动态特性,VariableCoefficientController实现参数自适应调节,PhysicsGuidedDRL整合DQN算法与物理模型引导的奖励机制。该方法通过模型驱动与数据驱动的优势互补,提升了频率控制性能,其中物理模型既作为先验知识

huanghm88的专栏 127

时间序列预测 | Python实现LSTM时间序列数据预测

目录LSTM神经网络LSTM原理LSTM数据下载LSTM程序设计导入Python包时序数据处理LSTM模块定义模型训练模型评估参数设定运行结果参考资料致谢 LSTM神经网络 长短期记忆网络——通常简称为“LSTM”——是一种特殊的 RNN,能够学习长期依赖关系。它们由Hochreiter & Schmidhuber (1997)引入,并在后续工作中被许多人提炼和推广。1它们在处理各种各样的问题时效果非常好,现在被广泛使用。LSTM 被明确设计为避免长期依赖问题。长时间记住信息实际上是他们的默认行为

前程算法屋的博客 3911

python获取图片像素矩阵_用python处理图片实现图像中的像素访问

这篇文章主要介绍了关于用python处理图片实现图像中的像素访问,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下前面的一些例子中,我们都是利用Image.open()来打开一幅图像,然后直接对这个PIL对象进行操作。如果只是简单的操作还可以,但是如果操作稍微复杂一些,就比较吃力了。因此,通常我们加载完图片后,都是把图片转换成矩阵来进行更加复杂的操作。python中利用numpy库和s...

weixin_34039159的博客 6265

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

python 图片对比区域_python读取图片任意范围区域

使用python进行图片处理,现在需要读出图片的任意一块区域,并将其转化为一维数组,方便后续卷积操作的使用。下面使用两种方法进行处理:convert 函数from PIL import Imageimport numpy as npimport matplotlib.pyplot as pltdef ImageToMatrix(filename):im = Image.open(filename)...

weixin_29415575的博客 709

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

python找图片特定区域_python读取图片任意范围区域

使用python进行图片处理,现在需要读出图片的任意一块区域,并将其转化为一维数组,方便后续卷积操作的使用。下面使用两种方法进行处理:convert 函数from PIL import Imageimport numpy as npimport matplotlib.pyplot as pltdef ImageToMatrix(filename):im = Image.open(filename)...

weixin_39613208的博客 1995

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C++调用python训练的pytorch模型(四)-----C++向python传输图片

C++向python传输图片 参考:c++向python传输图片 高效方法 mat转numpy 参考:c++ 调用python传输图片 c++代码实现 #include <Python.h> #include <memory> #include <iostream> #include <vector> #include <opencv2/cor...

xiake001的专栏 2933

_io.BufferedReader图片类型转化为numpy.ndarray格式

_io.BufferedReader图片转化为numpy.ndarray格式 转化顺序为:_io.BufferedReader --> bytes --> 单通道numpy.ndarray --> 多通道numpy.ndarray Python转化代码: pic = open(path, mode='rb') print('pic type:',type(pic)) data = pic.read() print('data type:',type(data)) nparr = np.fr

小平爱吃肉的博客 1350

python 保存生成的模型,Pytorch 保存模型生成图片方式

搜索热词三通道数组转成彩色图片img=np.array(img1)img=img.reshape(3,img1.shape[2],img1.shape[3])img=(img+0.5)*255##img做过归一化处理,【-0.5,0.5】img_path='/home/isee/wei/image/imageset/result.jpg'img=cv2.merge(img)cv2.imwrite(...

weixin_35725138的博客 723

python怎么画简单图片-只需 45 秒,Python 给故宫画一组手绘图!

作者 | 丁彦军责编 | 屠敏13 日早晨,当北京市民拉开窗帘时发现,窗外雪花纷纷扬扬在空中飘落,而且越下越大,树上、草地、屋顶、道路上,都落满雪花。京城银装素裹,这是今冬以来北京迎来的第二场降雪。一下雪,北京就变成了北平,故宫就变成了紫禁城。八万张门票在雪花飘下来之前,便早已预订一空。看着朋友圈、微博好友都在纷纷晒图,作为程序员的我只能坐在办公室里羡慕不已。不过普通人得去故宫赏雪,程序员可以...

weixin_37988176的博客 1004
上一篇: numpy的tfrecord处理
下一篇: Ubuntu实时监控GPU显存和CPU内存的使用情况
srf_code
博客等级 码龄10年 11粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值