Borrar filtros
Borrar filtros

help with image processing code

3 visualizaciones (últimos 30 días)
aaa
aaa el 11 de Jul. de 2011
Hi, i am new to matlab and need some help with this
i have used imread to read in a jpg image. however the workspace reads this as a 3 dimensional matrix, e.g. 150x100x3 uint8
how can i change this to a 2 dimensional matrix? i believe i have to use a gray scale image to accomplish this, but i cant seem to get it to work.
i have:
a = imread('image.jpg')
b = gray(a);
secondly, how can i read in a bunch of images into matlab for processing? i.e. i want to read in 1.jpg, 2.jpg, 3.jpg into the workspace. I know I need a for loop ,but i can't quite put the code together using the imread syntax.
for i = 1:5
a(i) = imread(xxxxx.jpg);
end
thank you

Respuesta aceptada

Walter Roberson
Walter Roberson el 11 de Jul. de 2011
b = rgb2gray(a);
To read a bunch of images, please see this FAQ
  2 comentarios
aaa
aaa el 12 de Jul. de 2011
i just have another question regarding the FAQ you have. it refers to the following code to read a bunch of jpgs in to matlab.
jpegFiles = dir('*.jpg');
numfiles = length(jpegFiles);
mydata = cell(1,numfiles);
%%Processing a sequence of files (matlab doc)
for k = 1:numfiles
mydata(k) = imread(jpegFiles(k).name);
end
my problem is that i get the error "conversion to cell from uint8 is not possible" however, the imread function makes all images into uint8, and my guess is that the above code wants a "double" format.
However, i cannot do this pre-processing if i don't have the images loaded in the first place, so it seems to be counter-intuitive. What can I do to bypass this?
Walter Roberson
Walter Roberson el 12 de Jul. de 2011
mydata{k} = imread(jpegFiles(k).name);
Notice the {k} instead of (k)

Iniciar sesión para comentar.

Más respuestas (1)

aaa
aaa el 11 de Jul. de 2011
thanks for the quick reply, i read through the faq and tried this but i get the following error
In an assignment A(:) = B, the number of elements in A and B must be the same.
Error in ==> test at 11 b(i) = sprintf('%d.jpg',k(i));
my code looks like
for i = 1:3
b(i) = sprintf('%d.jpg',i);
c(i) = imread(b(i));
end
thank you

Categorías

Más información sobre Convert Image Type en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by