【发布时间】:2017-04-24 18:06:29
【问题描述】:
我在一个文件夹中有多个图像,对于每个图像,我想将数据(像素值)存储为行向量。将它们存储在行向量中后,我可以将这些行向量组合为一个多维数组。例如第一个图像的数据将存储在第 1 行,第二个图像的数据将存储在第 2 行,依此类推。并且任何时候我想访问特定的图像数据,假设我想要第三张图像,我可以这样做race(3,:)。
我目前收到错误:
被连接的矩阵的维度不一致。
错误发生在这里race = [race; imagevec] 我不知道如何纠正这个问题,除非imagevec = I(:)' 没有将矩阵转换为行向量。
race = []; % to store all row vector
imagevec = []; % to store row vector
path = 'C:\Users\User_\somedir\'; % directory
pathfile = dir('C:\Users\User_\somedir\*.jpg'); % image file extension in directory
for i = 1 : length(path)
filename = strcat(path,pathfile(i).name); % get the file
I = imread(filename); % read file
imagevec = I(:)'; % convert image data to row vector
race = [race; imagevec]; % store row vector in matrix
end
【问题讨论】:
-
您的原始图像的大小似乎不同。在每个
I = imread(filename);之后执行disp(size(I))看看是否是问题所在。 -
纠正这个问题的方法是在连接矩阵的位置放置一个断点并运行脚本。然后在每次迭代中检查两个矩阵的维度,直到它们不一致。然后您就找到了显示错误的图像以及原因。
-
你说的都对,我看他们的维度不同。出于某种原因,我没有考虑到这一点。使它们全部达到同一维度的最佳方法是什么?
标签: matlab