You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取图像尺寸并将其作为变量?Matlab代码求助

获取Matlab图像尺寸并用于变量定义

嘿,我来帮你搞定这个问题!你已经用dir拿到了文件夹里的PNG文件列表,接下来要获取图像尺寸并把它作为变量来创建矩阵对吧?这其实很简单,咱们一步步来:

首先,dir函数只能拿到文件的基本信息(文件名、大小这些),不会包含图像的尺寸数据,所以咱们得先读取至少一张图像来获取尺寸。假设你文件夹里的所有图像尺寸都一样(这也是你想创建统一大小矩阵的前提),那咱们可以先读第一张图:

% 先把文件夹路径单独拎出来,方便后续拼接
imageFolder = 'C:\example\Desktop\imagefolder';
a = dir(fullfile(imageFolder, '*.png'));
numberofImages = length(a);

% 读取第一张图像获取尺寸
firstImagePath = fullfile(a(1).folder, a(1).name); % 用fullfile拼接完整路径,避免路径分隔符问题
firstImage = imread(firstImagePath);
imgSize = size(firstImage); % 得到的是 [高度, 宽度, 通道数],灰度图的话就是 [高度, 宽度]
sizeofimage = numel(firstImage); % 计算图像的总元素数,这就是你需要的sizeofimage变量

接下来就可以用这个sizeofimage来创建你要的矩阵了,甚至可以把所有图像展平后存进去:

% 创建存储图像的矩阵,每一行对应一个展平后的图像
matrix = zeros(numberofImages, sizeofimage);

% 遍历所有图像,把它们展平后存入矩阵
for i = 1:numberofImages
    currentImage = imread(fullfile(a(i).folder, a(i).name));
    matrix(i, :) = currentImage(:); % 把图像展平成一维向量,存入矩阵的第i行
end

这里有几个关键点要注意:

  • 用fullfile拼接路径是个好习惯,它会自动适配不同系统的路径分隔符(Windows的\和Linux的/),让代码更通用。
  • size()函数给你的是图像的维度信息,而numel()直接返回图像的总像素/元素个数,正好对应你需要的sizeofimage,用来定义矩阵的列数。
  • 如果你的图像是RGB彩色图,numel()会把三个通道的像素都算进去(比如100×100的RGB图,总元素数是30000),矩阵的每一行就对应这30000个像素值。
  • 要是文件夹里的图像尺寸不一样,那上面创建统一矩阵的方法就不行了——这时候你要么先把所有图像resize到同一个尺寸,要么改用cell数组来存储不同大小的图像(比如matrix = cell(numberofImages, 1);,然后每个cell存原尺寸的图像)。

内容的提问来源于stack exchange,提问作者Oscar Dolloway

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:10:03