-
不显示通道数:
要将多张图片读取为一个 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)
说明
-
导入库 :你需要确保已经安装了
Pillow
和NumPy
库,可以使用以下命令安装: -
pip install Pillow numpy
-
图片读取:
os.listdir(folder)
列出文件夹中的所有文件名。Image.open(img_path).convert('L')
读取每张图片并将其转换为灰度图像(单通道)。np.array(img)
将图片转换为 NumPy 数组。
-
返回结果 :所有图片以数组形式返回,并且形状为
(a, b, c)
,其中a
是图片数量,b
和c
是图片的高度和宽度。 -
调整图片大小:如果图片尺寸不一,可以在读取时添加尺寸调整的代码,以确保所有图片的形状一致。
-
显示通道数:
要将多张图片读取为一个 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 会因为尺寸不一致而无法正确创建。