【问题标题】:Matlab: How can I display several outputs in the same image?Matlab:如何在同一图像中显示多个输出?
【发布时间】:2011-10-14 08:52:29
【问题描述】:

假设我的图像是img=zeros(100,100,3),我的输出是几个椭圆,我使用创建的函数[ret]=draw_ellipse(x,y,a,b,angle,color,img) 获得,我可以使用imshow(ret) 显示一个椭圆。目前,我正在尝试显示薮椭圆在图像中。但我不知道如何编码。 “for循环”会起作用还是我需要持有它们?

【问题讨论】:

    标签: image matlab ellipse


    【解决方案1】:

    如果这与您在 previous question 中所做的事情有关,那么您需要做的是将一次迭代的结果作为输入传递给下一次迭代。

    因此假设您提到的函数[ret]=draw_ellipse(x,y,a,b,angle,color,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)
    

    【讨论】:

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

    我有点不确定你想要什么。您想在一张图像中显示多个椭圆,例如使用hold on 绘制多个图形?

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

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

    【讨论】:

      【解决方案3】:

      大概您想将ret 作为最终输入传递给对draw_ellipse 的下一次调用。

      【讨论】:

        猜你喜欢
        • 2012-06-01
        • 1970-01-01
        • 2017-10-28
        • 2013-03-21
        • 2012-01-21
        • 2017-05-27
        • 1970-01-01
        • 2021-02-28
        • 2022-07-12
        相关资源
        最近更新 更多