【问题标题】:matlab - figure keeps blinking when streaming webcammatlab - 流式传输网络摄像头时数字一直闪烁
【发布时间】:2017-05-23 16:59:39
【问题描述】:

我首先创建了一个图形以将网络摄像头图像流式传输到它上面。然后,我在从网络摄像头流式传输时在图形上创建了一个 3D 轴。请注意,网络摄像头帧流未设置在 3D 轴内,而是设置在图形本身的 3D 轴外。问题是由于uistack(ah,'bottom') 功能,当我流式传输网络摄像头时,该数字一直在闪烁。我需要这个函数来将 3D 轴 ah 保持在流图形背景 frame 的前面。

如您所见,我正在使用我的网络摄像头播放苹果。由于uistack(ah,'bottom') 函数,您还可以看到 3D 轴位于背景前面。如果我不使用此功能,3D 轴将隐藏在背景后面。

% turn on webcam
camList = webcamlist;
cam = webcam(camList{1});

% stream webcam
while(1)
    frame = snapshot(cam);
    ah = axes('unit','normalized','position',[0 0 1 1]);
    imagesc(frame)
    drawnow
    set(ah,'handlevisibility','off','visible','off','Clipping','off')
    uistack(ah,'bottom')
end

【问题讨论】:

    标签: matlab streaming webcam figure axes


    【解决方案1】:

    我解决了这个问题。

    您需要定义两个轴:(i) 一个用于流式图像az,(ii) 另一个用于循环的outside 静态图像ah。此外,将uistack 函数放在外部,因为告诉程序在每个循环中将ah 保持在az 轴的顶部是多余的。

    camList = webcamlist;
    cam = webcam(camList{1});
    
    hold on
    az = axes('unit','normalized','position',[0 0 1 1]);
    ah = axes('unit','normalized','position',[0 0 1 1]);
    uistack(ah,'top')
    
    while(1)
        frame = snapshot(cam);
        imagesc(az,frame)
        drawnow
    end
    

    【讨论】:

      猜你喜欢
      • 2013-05-14
      • 1970-01-01
      • 2014-04-13
      • 2014-06-18
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多