多张图片读入后组成一个矩阵。怎么读取图片,可以让其读入的形式是:ndarray(a,b,c)分别的含义:a为多少张图片,b*c为图片大小

  • 不显示通道数:

    要将多张图片读取为一个 NumPy 数组(ndarray),其中 a 表示图片数量,b 和 c 分别表示每张图片的高度和宽度(不显示通道数),你可以使用 Python 中的 PIL(Pillow)库和 NumPy 库。下面是一个示例代码,展示了如何实现这一点:

    代码示例

import numpy as np

from PIL import Image

import os

def load_images_from_folder(folder):

images = \[\]

for filename in os.listdir(folder):

img_path = os.path.join(folder, filename)

img = Image.open(img_path).convert('L') # 转为灰度图像,只有一个通道

images.append(np.array(img))

如果你想保持所有图片的尺寸一致,可以在这里对它们进行裁剪或缩放

例如:

img = img.resize((desired_width, desired_height))

return np.array(images)

指定图片所在的文件夹路径

folder_path = 'path/to/your/images/'

image_array = load_images_from_folder(folder_path)

print(image_array.shape) # 输出.shape 应该是 (a, b, c)

说明

  1. 导入库 :你需要确保已经安装了 Pillow 和 NumPy 库,可以使用以下命令安装:

  2. pip install Pillow numpy

  3. 图片读取:

    • os.listdir(folder) 列出文件夹中的所有文件名。
    • Image.open(img_path).convert('L') 读取每张图片并将其转换为灰度图像(单通道)。
    • np.array(img) 将图片转换为 NumPy 数组。
  4. 返回结果 :所有图片以数组形式返回,并且形状为 (a, b, c),其中 a 是图片数量,b 和 c 是图片的高度和宽度。

  5. 调整图片大小:如果图片尺寸不一,可以在读取时添加尺寸调整的代码,以确保所有图片的形状一致。

  • 显示通道数:

    要将多张图片读取为一个 NumPy ndarray,并且使其形状为 (a, b, c),其中 a 是图片的数量,b 和 c 是每张图片的尺寸(高度和宽度),你可以使用 OpenCV 或 PIL 库来读取图片,并将它们转换成 ndarray。

    下面是使用这两个库的例子:

    使用 OpenCV

import cv2

import numpy as np

import os

读取图片函数

def load_images_from_folder(folder):

images = \[\]

for filename in os.listdir(folder):

img = cv2.imread(os.path.join(folder, filename))

if img is not None:

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 将 BGR 转换为 RGB

images.append(img)

return np.array(images)

使用示例

folder_path = 'path/to/your/images'

images_array = load_images_from_folder(folder_path)

print(images_array.shape) # 输出形状: (数量, 高度, 宽度, 通道数)

使用 PIL

from PIL import Image

import numpy as np

import os

读取图片函数

def load_images_from_folder(folder):

images = \[\]

for filename in os.listdir(folder):

img = Image.open(os.path.join(folder, filename))

img = img.convert('RGB') # 转换为 RGB 模式

images.append(np.array(img))

return np.array(images)

使用示例

folder_path = 'path/to/your/images'

images_array = load_images_from_folder(folder_path)

print(images_array.shape) # 输出形状: (数量, 高度, 宽度, 通道数)

注意事项

  • 如果你希望输出的 ndarray 形状为 (a, b, c),你需要对最后的输出进行调整,通常你可以选择丢弃通道信息,形状可能转为 (a, b, c, 3),表示 RGB 通道。
  • 确保所有的图片都是同样的尺寸(高、宽),否则最终的 ndarray 会因为尺寸不一致而无法正确创建。
相关推荐
李日华大战鸡红10 小时前
FOC状态空间方程模型推导(学习记录)
python·学习·线性代数
for_ever_love__3 天前
线性代数入门——向量、矩阵与点积,Transformer 的运算本质
线性代数·矩阵·transformer
打工仔折腾 AI3 天前
从零写一个CAD 05:以鼠标为中心的滚轮缩放矩阵顺序不能反
后端·python·线性代数·性能优化·矩阵·计算机外设·ai agent 实战
黑妹天下第一乖4 天前
第 04 讲:阿加犀 AIMO 模型优化平台与 Model Farm 模型广场实战
人工智能·嵌入式硬件·矩阵·架构·iot
hai3152475434 天前
语言学矩阵原理
人工智能·机器学习·矩阵
hai3152475435 天前
文本矩阵化拆解与视频矩阵化构建
线性代数·矩阵·音视频
Godspeed Zhao5 天前
现代智能雷达技术14——算法(0)
线性代数·算法·雷达
蝶依斓(湖南)全案整装6 天前
整装行业长尾需求内容矩阵搭建方法:从五个维度拆解用户需求
大数据·人工智能·矩阵
梦帮科技6 天前
推测解码(Speculative Decoding)与 Draft-Target 双核协同:接受率判据、树状验证与两倍吞吐无损加速
网络·人工智能·深度学习·神经网络·线性代数·矩阵·架构
xqqxqxxq7 天前
LeetCode Hot100 矩阵专题题解笔记
笔记·leetcode·矩阵