我想改变每一个像素,所以它是“255像素”。 我想在for-loop(!)中做到这一点。
我的代码到现在为止:
for n=1:1:512 %it's a 512x512 image
picture = 255 - picture;
end
但我不知道如何在图像中按单个像素更改单个像素。
那么我需要在代码中更改“图片”?
抱歉英语不好。我也是新手。感谢您的帮助
答案 0 :(得分:4)
如果你坚持使用for循环,计算一般数组的每个元素的数字的补码:
for n=1:numel(picture)
picture(n) = 255 - picture(n);
end
或者,如果你需要一个二维数组的嵌套循环:
for n=1:size(picture,1)
for m=1:size(picture,2)
picture(n,m) = 255 - picture(n,m);
end
end
然而,这实际上是滥用Matlab。人们想要使用Matlab的一个重要原因是完全以避免像这样的for循环。相反,你应该简单地说:
picture = 255 - picture
答案 1 :(得分:2)
如果你想改变整个画面,我建议你不要使用任何for循环。 只是:
picture = 255 - picture;
如果不必在循环中工作,Matlab会更快;
如果您需要在for循环中修改它,图片是典型的RGB格式,图片大小为512x512x3
for a=1:512
for b=1:512
for c=1:3
picture(a,b,c) = 255 - picture(a,b,c);
end
end
end