jpg图片转成列表为什么是三维数组

图片转三维数组

#导入必要的包
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image

#读入图片
imagePath = 'image/testfan.jpg'
img = Image.open(imagePath)

#将img转化为列表
np.array(img)

在将img转化为列表后,发现是这么个三维列表

 这是为什么?

是因为通过jpg格式保存的图片,记录了图片的大小每个像素点的信息(RBG的信息)。每个像素构成一个一维列表,图片的每一行组成一个二维列表,所有的行就组成了一个三维列表,也就是一张jpg格式的图片。譬如是5*5*3的图片,5*5代表图片有5行5列的像素点,*3表示色深是3,即有红绿蓝

对了是因为通过png格式保存的图片,不仅记录了图片的大小每个像素点的信息(RBG的信息),每个像素点中还记录了一个叫“alpha通道”的东西来描述透明度,也就导致了一维数组中有4个元素

三维数组转图片

上面的例子可能还不直观,下面将三维数组转成图片

from PIL import Image

# 生成一个100x100x3的随机三维列表
import random
data = [[[random.randint(0, 255) for _ in range(3)] for _ in range(100)] for _ in range(100)]

# 将三维列表转换为图像
img = Image.new('RGB', (100, 100))
for x in range(100):
    for y in range(100):
        r, g, b = data[x][y]
        img.putpixel((x, y), (r, g, b))

# 显示图像
img.show()

运行这段代码会得到下面这张图片:

没错就是这么一张图,每个小色块代表了一个像素

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值