我想改变每一个像素,所以它是“255 - 像素”。 我想做for循环(!)。访问单个图像像素,matlab
我的代码至今:
for n=1:1:512 %it's a 512x512 image
picture = 255 - picture;
end
,但我不知道如何通过单个像素更改图像中单个像素。
那么我需要更改“图片”在我的代码?
对不起英语不好。我也是一个总新手。
感谢您的帮助
我想改变每一个像素,所以它是“255 - 像素”。 我想做for循环(!)。访问单个图像像素,matlab
我的代码至今:
for n=1:1:512 %it's a 512x512 image
picture = 255 - picture;
end
,但我不知道如何通过单个像素更改图像中单个像素。
那么我需要更改“图片”在我的代码?
对不起英语不好。我也是一个总新手。
感谢您的帮助
如果你坚持要用一个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-loops。相反,你应该简单地:
picture = 255 - picture
,如果你想改变整个画面,我不会使用任何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
什么是“numel”?这是一次大学练习,并专门用循环说,但在第二个练习中,它说要像你所建议的那样做(矩阵运算) – noclue123
我想象这可能是练习的一部分。 ['numel'](https://www.mathworks.com/help/matlab/ref/numel.html)计算数组中元素的数量。第一个示例与[线性索引](https://www.mathworks.com/help/matlab/math/matrix-indexing.html#f1-85511)一起使用以访问阵列的所有元素,而不管其形状。参考Matlab的文档很有用,特别是关于[基础](https://www.mathworks.com/help/matlab/language-fundamentals.html)的章节。 – Yuval