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

本文介绍如何将图像数据转化为numpy数组形式,并实现数组与图像之间的相互转换,以方便进行深度学习模型的数据集构建。

   ✨✨✨

感谢优秀的你打开了小白的文章

希望在看文章的你今天又进步了一点点,离美好生活更近一步!🌈

 🚀往期回顾

图像的基本处理(一)(1条消息) 图像基本处理(一)_am_student的博客-优快云博客
图像的基本处理(二)(1条消息) 图片的基本处理(二)_am_student的博客-优快云博客
图像的基本处理(三)(1条消息) 图像的基本处理(三)_am_student的博客-优快云博客

图像的基本处理(四)

图像的基本处理(五)ImageDraw 模块的使用

(1条消息) 学完这些图像处理,我拿去给女友修了图..._am_student的博客-优快云博客

图像的基本处理(五)ImageDraw 模块的使用_am_student的博客-优快云博客

🍉前言

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

🍉将图片转化成numpy数组 

例如:只是将一张照片转化为数组,那么可以简单的这样写。

 

 

 

 

 

 

from PIL import Image 
import numpy as np

image = Image.open("2.jpg") 
image_arr = np.array(image) # 转化成numpy数组

 

🍉转换实例

我们的任务:是将在./images/中的图片转化为数组,并将转化的数组保存,然后尝试将数组再转化为图片保存在./result/中。

from PIL import Image
import numpy as np
import os
import pickle

#读取图片的目录
image_dir='./images/'
#保存图片的目录
result_dir='./result/'
#保存数组的文件
array_file='./array.bin'
#读取images目录下的图片,将图片保存成大的一维数组,将数组保存到文件
def image_to_array_file():
    #获取8张图片的名称
    filenames=os.listdir(image_dir)
    #定义变量保存8张图片的大数组
    image_arrs=np.array([])
    for filename in filenames:
        #读取图片
        img=Image.open(image_dir+filename)
        #将每张图片分隔
        r,g,b=img.split()
        #将r g b 转换为一维的数组
        r_arr=np.array(r).reshape(62500)
        g_arr=np.array(g).reshape(-1)
        b_arr=np.array(b).reshape(62500)
        #将 r_arr  g_arr  b_arr 拼接为一维数组
        arrs=np.concatenate((r_arr,g_arr,b_arr))
        image_arrs=np.concatenate((arrs,image_arrs))

    #将一维数组保存到文件中
    with open(array_file,'wb') as f:
        pickle.dump(image_arrs,f)


#读取文件中的内容,转换图片
def file_to_image():
    with open(array_file,'rb') as f:
        images=pickle.load(f)
        image_arr=images.reshape((8,3,250,250))
    for i in range(8):
        r=Image.fromarray(image_arr[i][0]).convert('L')
        g=Image.fromarray(image_arr[i][1]).convert('L')
        b=Image.fromarray(image_arr[i][2]).convert('L')
        #合并图片
        image=Image.merge('RGB',(r,g,b))
        image.save(result_dir+str(i)+'.jpg')

if __name__ == '__main__':
    file_to_image()

 那么我们可以得到一个关于存储数组的array文件,里面就是包含我们所需要的训练的数据。

### 回答1: 最佳阵列处理是一种信号处理技术,它利用多个传感器或天线来接收处理信号,以提高信号的质量可靠性。最佳阵列处理可以用于许多应用,如雷达、通信、声学生物医学等领域。它的主要目标是最大化信号的接收效率,减少噪声干扰的影响,从而提高信号的准确性可靠性。 ### 回答2: "Optimum array processing" 是指对数组进行最优化的处理。 数组是一种存储数据的结构,由相同类型的元素组成。在计算机科学数据处理中,数组常常用于存储处理大量的数据。 "Optimum array processing" 主要通过使用特定的算法技术来实现对数组的最优化处理。这样做的目的是为了提高处理效率,减少时间空间复杂度,从而更高效地完成处理任务。 在进行"Optimum array processing"时,可以采取以下几种优化策略: 1. 数据预处理:在开始处理数组之前,对数据进行必要的预处理,如去除冗余信息、规范化数据格式等。这将有助于减少后续处理中的复杂度运算量。 2. 使用适当的数据结构:根据具体的处理需求,选择合适的数据结构来存储操作数组数据。例如,使用哈希表来实现快速查找插入,使用堆数据结构来实现优先级队列等。 3. 并行处理:利用多核处理器或分布式计算系统,将数组处理任务划分为多个子任务,并同时进行处理。这样可以利用并行计算的优势,提高处理效率。 4. 智能算法:通过使用智能算法(如遗传算法、模拟退火算法等)来优化数组处理过程,以找到最优的解或近似最优解。 "Optimum array processing" 的具体方法技术取决于处理任务的性质要求。在实际应用中,可以结合多种策略技术,进行综合性的优化处理,以达到最佳的处理效果。 ### 回答3: 最佳数组处理(optimum array processing)是一种优化算法,旨在通过最佳的方式处理数组数据,以获得最佳的性能效率。 在进行数组处理时,我们通常会面临一些挑战,如处理时间、空间需求以及处理算法的复杂度。最佳数组处理算法的目标是通过优化处理方式来解决这些挑战。 最佳数组处理算法可以通过多种方式实现。其中一种方法是通过选择最佳的数据结构来存储访问数组元素。例如,使用哈希表或二叉搜索树可以提高查找存取元素的效率。另一种方法是通过合理地安排组织算法的执行顺序来减少运行时间。例如,使用分治算法或动态规划可以有效地解决一些复杂的数组处理问题。 最佳数组处理算法还可以通过并行化来提高处理速度。通过将数组分成多个部分,并在多个处理器上并行执行处理任务,可以大大缩短处理时间。同时,还可以通过使用高级优化技术,如矢量化并行计算,进一步提高处理效率。 总之,最佳数组处理算法是通过优化处理方式算法来提高数组处理性能效率的方法。通过选择最佳的数据结构、合理地安排执行顺序以及并行化处理等技术,可以使我们更快地处理数组数据,提高程序的性能效率。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进步小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值