2012-03-04 96 views
6

我正在尝试查找已加载到matlab中的图像的大小。图像的Matlab大小

image=imread('text.jpg'); 
[x,y]=size(image); 

这将返回错误:

Indexing cannot yield multiple results.

是否imread不能阅读图像到一个二维数组,因此它应该有两个尺寸?

+0

您的代码对我来说确实很好。您是否尝试过使用imfinfo来查看文件中的内容? – 2012-03-04 13:12:57

回答

9

是否有可能在此代码之前定义了一个名为size的变量?

+0

是的,就是这样!对不起,没有发现明显的错误!谢谢。 – Joseph 2012-03-04 13:19:02

3

您必须使用[height, width, colour_planes] = size(image);,因为图像有3个维度。第三个维度是色彩平面的数量。如果你不需要这个值,你可以用~来替代它。

+0

什么是第三维? – scord 2013-09-19 18:51:50

+0

颜色。第一维是红色值,第二维是绿色,第三维是蓝色 – Alexander 2016-02-04 19:57:30

-3

你可以试试这个:

image=imread('text.jpg'); 
[x y]=size(image); 
+2

这与问题中的代码有何不同? – Daniel 2016-02-21 13:05:09

1

只要使用这个whos,然后按回车。

image=imread('text.jpg'); 
whos 
13

对于那些希望找到在Matlab的图像的大小,不使用:

[height, width] = size(image); 

这是因为imread存储的RGB值分别(用于彩色图像),产生了三维矩阵。

例如,如果您加载500p高200p宽的彩色图像,则会产生500x200x3的矩阵。

以这种方式调用size()将导致维度被“卷起”,并将报告高度为500,但宽度为600(200 * 3)。

相反,使用:

[height, width, dim] = size(image); 

将返回500正确的值,200,3

1

[X,Y,Z] =尺寸(图像); 是正确的。 x和y将给出图像的长度和宽度,z指定颜色。

数字图像由RGB组成,因此z将为3.