image help
1 view (last 30 days)
Show older comments
What is the meaning of the following code and why it is running in infinite loop??
image=imread('pp.jpg'); [rows,cols]=size(image); pixels=[];
for i=1:rows
for j=1:cols
pixels=[pixels;image(i,j)];
end
end
0 Comments
Accepted Answer
Image Analyst
on 20 Mar 2012
Just use
pixels = reshape(yourImageArray, [1 numel(yourImageArray)]);
or
pixels = yourImageArray(:);
to get a 1D list of all the pixels. I think your code takes nearly forever because it needs to reallocate a new array every time you do pixels=[pixels;image(i,j)]; and that array gets bigger and bigger each time. And like the others said, don't use "image" for the name of any variable because you're blowing away the built-in function of that name if you do.
Tip: In the future, make sure there is a blank line before your code, then highlight all your code and click the "*{}Code*" icon above your edit box to format your text like code so that we can read it better.
More Answers (1)
Jakob Sørensen
on 20 Mar 2012
It shouldn't be infinite, but very possibly it will take a long time to run it. It seems to plot the image in a very weird and time consuming way, over and over again. I can't think of any reason to use that kind of code, but maybe someone else can. What is it you want to do?
3 Comments
Jakob Sørensen
on 20 Mar 2012
Also just noted another thing, which explain why it seemed so confusing. "image" is the name of a function Matlab used to plot images (see "help image"), so using it as a variable name, why not disastrous, isn't very smart.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!