2016-05-02 18 views
0

Ich habe ein Bild ('strawberry.jpg') strawberry.jpgwarum Größe (y-Achse) von imread Bild größer als echtes

image=imread('strawberry.jpg'); 
imshow(image); 

es, wie unten angezeigt.

imshowimage

denke ich, die x- und y-Achse sind in Pixel des Fotos gezeigt. Aber wenn ich versuche, um die Größe zu erhalten, indem mit

[x,y]=size(image) 

Dann habe ich x = 177 und y = 852. Aber der Wert ist nicht in der Nähe mit denen, die in imshow Bild gezeigt werden.

Also, mache ich etwas falsch? oder [x, y] = Größe (Bild) bedeutet eine andere Größe als die Pixelgröße, die im Imshow-Bild angezeigt wird.

Dank

+0

Versuchen Sie nur '[x, y, z] = Größe (Bild)'. Da 'image' ein 3D-Array ist, indem Sie nur zwei Ausgaben von' size' zulassen, erzwingen Sie, dass'y' gleich dem Produkt der 2. und 3. Dimension ist. – David

+0

danke @ David. Es macht Sinn. –

Antwort

0

Dies liegt daran, dass Sie ein RGB-Bild (das heißt drei Kanäle in der dritten Dimension) haben. Wenn Sie explizit zwei Ausgaben von size anfordern, gibt es die Anzahl der Zeilen für die erste Ausgabe und die Anzahl der Spalten mal die Größe der dritten Dimension (284 x 3) als the second output zurück.

Wenn Sie die wahren Abmessungen Ihres RGB-Bildes wünschen, müssen Sie drei Ausgänge auf Größe angeben.

[nRows, nColumns, nChannels] = size(image); 

Alternativ könnte man einen einzigen Ausgabe von size fordern, und es wird eine Reihe von Größen ergeben, wobei jedes Element der Größe entspricht in dass Dimension.

sz = size(image); 
%// 177 284 3 

Oder verwenden Sie das zweite Eingabeargument, um explizit die Dimension anzugeben, die Ihnen wichtig ist.

nRows = size(image, 1); 
nColumns = size(image, 2);