我有一个m.n
图像矩阵,如下所示:
images = zeros( m, n, height, width );
这意味着我有m.n
张图片的宽度和高度。然后,在for循环中;我填写这些图像:
for i=1:m
for j=1:n
images(i,j,:,:) = imread('imagePath');
end
end
然后,假设我想使用图像(1,1)
:
image1 = images(1,1,:,:);
我希望此image1
有size = (h,w)
。但是,当我说:
size(image1)
我得到了结果:
(1,1,h,w)
为什么我没有以下结果?
(h,w)
如何重构我的代码以获得预期的结果?
答案 0 :(得分:1)
答案 1 :(得分:1)
它与matlab如何编制索引有关。当你说
image1 = images(1,1,:,:);
你告诉matlab你想要一个4维数组,第一维和第二维的大小为1。
如果您曾说过:
junk = images(:,:,1,1);
size(junk)
> [m,n]
Matlab将大小为[m,n]的矩阵视为大小为[m,n,1]或[m,n,1,1]的矩阵。不能在前面做到这一点,因此需要squeeze
作为@Junuxx指出。另一种方法是做如下事情:
images = zeros( height, width, m, n );
for i=1:m
for j=1:n
images(:,:,m,n) = imread('imagePath');
end
end
image1 = images(:,:,1,1);