我要编写一个程序,在特定图像中显示钻石 我写了这段代码
Img=zeros(256,256);
for x=1:256
for y=1:256
if(y-x==128)||(y-x==-128)||(y+x==128)
Img(x,y)=1;
end
end
end
imshow(Img);
我可以画三边菱形。 我如何绘制第四条边?
最佳答案
Luis Mendo 在循环的 if
语句中确定了最后一个条件以绘制最后一行。如果您需要 for
循环解决方案,他的解决方案就是您正在寻找的解决方案。
但是,如果您想要更矢量化的内容,更有效的方法是使用 meshgrid
定义坐标网格然后只需应用一系列 逻辑
操作即可获得您的钻石。换句话说:
[x,y] = meshgrid(1:256, 1:256);
Img = abs(x-y) == 128 | x+y == 384 | x+y == 128;
imshow(Img);
我们因此得到:
一般来说,对于给定尺寸的正方形图像,您可以通过以下方式将其调整为任何尺寸的图像:
N = 256; %// Change here - width/height of your image
[x,y] = meshgrid(1:N, 1:N);
Img = abs(x-y) == floor(N/2) | x+y == floor(3*N/2) | x+y == floor(N/2);
imshow(Img);
我已经放置了一个 floor
操作,以防您想要指定不能被 2 整除的图像大小。但是,菱形的对称性可能看起来不正确,但代码会无论如何工作。
关于image - 在图片中创建一个钻石,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27426052/