2012-03-04 16 views
6

Próbuję znaleźć rozmiar obrazu, który wczytałem do programu Matlab.Rozmiar obrazu Matlaba

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

to zwróci błąd:

Indexing cannot yield multiple results.

Czy imread nie czytać obraz w 2d tablicy, która powinna mieć dwa rozmiary?

+0

Twój kod wygląda na prawidłowy. Czy próbowałeś użyć, powiedzmy, imfinfo, aby zobaczyć, co jest w pliku? –

Odpowiedz

9

Czy to możliwe, że przed tym kodem zdefiniowano zmienną o nazwie size?

+0

Tak, to było to! Przepraszam, że nie zauważyłem oczywistego błędu! Dzięki. – Joseph

3

Musisz użyć [height, width, colour_planes] = size(image);, ponieważ obrazy mają 3 wymiary. Trzeci wymiar to liczba kolorowych płaszczyzn. Jeśli nie potrzebujesz tej wartości, możesz ją zignorować, aby zastąpić ją ~.

+0

jaki jest trzeci wymiar? – scord

+0

Kolor. Pierwszy wymiar to czerwone, drugi to zielenie, a trzeci to blues. – Alexander

-3

Można spróbować to:

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

Czym to się różni od kodu w pytaniu? – Daniel

1

Wystarczy użyć tego whos i naciśnij enter.

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

Dla tych, którzy chcą znaleźć rozmiar obrazu w programie MATLAB, nie należy używać:

[height, width] = size(image); 

To dlatego imread sklepach wartości RGB osobno (dla obrazów kolorowych), otrzymując w efekcie trójwymiarowa matryca.

Na przykład, jeśli załadowano obraz kolorowy o wysokiej rozdzielczości 500p, o szerokości 200p, powstanie matryca o wymiarach 500x200x3.

Wielkość wywołania() w ten sposób spowoduje, że wymiarowość zostanie "zwinięta", a wysokość będzie wynosić 500, ale szerokość będzie równa 600 (200 * 3).

Zamiast z:

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

powróci odpowiednie wartości 500, 200, 3.

1

[X, Y, Z] = wymiar (obraz); jest prawidłowy. x i y podają długość i szerokość obrazu, a z określa kolor.

Obraz cyfrowy składa się z RGB, więc z będzie 3.