Image Matlab:如何在同一图像中显示多个输出?

Image Matlab:如何在同一图像中显示多个输出?,image,matlab,ellipse,Image,Matlab,Ellipse,假设我的图像是img=zero(100100,3),我的输出是几个椭圆,我使用创建的函数[ret]=绘制椭圆(x,y,a,b,角度,颜色,img),我可以使用imshow(ret)显示一个椭圆。目前,我正在尝试在图像中显示几个椭圆。但我不知道怎么编码。“for loop”行吗?还是我需要拿着它们?我有点不确定你想要什么。您想在一个图像中显示多个椭圆,就像用图形绘制多个图形一样 对于图像没有等效的命令,但一个简单的解决方案是将椭圆添加到一个图像中,并显示一个: several_ellipse =

假设我的图像是
img=zero(100100,3)
,我的输出是几个椭圆,我使用创建的函数
[ret]=绘制椭圆(x,y,a,b,角度,颜色,img)
,我可以使用
imshow(ret)
显示一个椭圆。目前,我正在尝试在图像中显示几个椭圆。但我不知道怎么编码。“for loop”行吗?还是我需要拿着它们?

我有点不确定你想要什么。您想在一个图像中显示多个椭圆,就像用图形绘制多个图形一样

对于图像没有等效的命令,但一个简单的解决方案是将椭圆添加到一个图像中,并显示一个:

several_ellipse = ellipse1 + ellipse2 + ellipse3;
imshow(several_ellipse)

如果这与您在中所做的相关,那么您需要做的是将一个迭代的结果作为输入传递给下一个迭代

因此,假设您提到的函数
[ret]=draw_ellipse(x,y,a,b,角度,颜色,img)
将图像
img
作为输入,并返回绘制椭圆的相同图像,您可以执行以下操作:

%# ellipses parameters
%#x = {..}; y = {..};
%#a = {..}; b = {..};
%#angle = {..}; color = {..};

img = zeros(200,100,'uint8');     %# image to start with
for i=1:10
    img = draw_ellipse(x{i},y{i}, a{i},b{i}, angle{i}, color{i}, img);
end
imshow(img)

大概您想通过
ret
作为下一次调用
draw\u eliple

的最终输入,非常感谢!阿姆罗,你的回答正是我想要的。你一路上帮了我很多忙。如果我想设置椭圆中心点坐标的随机序列值,假设'x=rand(1,10)*100'和'y=rand(1,10)*100',我如何将它们放入'{}'中?我不知道“{}”和“[]”之间的区别。@Ivy:如果你想访问向量/矩阵的元素,请使用括号
x(I)
,对于单元数组,请使用花括号
x{I}
。要在两者之间进行转换,可以使用CELL2MAT、NUM2CELL、MAT2CELL等函数。。。请务必阅读文档以了解更多信息。在这种情况下,向量可以正常工作,不需要单元阵列:嗨,Amro。很抱歉再次打扰你。如果我想使用随机的x、y、a、b值绘制随机椭圆,但如何防止它们相互重叠,然后将它们绘制到图像中。@Ivy:既然你已经分别提出了这个问题,我就在那个页面上发布了我的答案: