【问题标题】:Display a Video Stream in an App Designer Figure在 App 设计器图窗中显示视频流
【发布时间】:2018-09-18 18:30:49
【问题描述】:

我正在 App Designer 中开发一个简单的应用程序,并且一直在努力包含来自网络摄像头的视频流。

我遇到了以下帖子,但到目前为止,我的应用程序无法正常运行:https://uk.mathworks.com/matlabcentral/answers/357814-how-to-create-a-custom-preview-window-for-matlab-webcam

到目前为止,我正在做的是:

  1. 在 GUI 中创建坐标区对象。这是第二个数字,所以它被自动标记为app.UIAxes2。

  2. 在我的启动函数中包含以下命令:

    app.Camera = webcam;  %('USB2.0 PC CAMERA')
    image(app.UIAxes2,zeros(size(snapshot(app.Camera)),'uint8'));
    

app.Camera 是我的相机对象(我已在类中包含该属性),第二个命令应该将图像调整为相机视频流大小。我可能错了。

  1. 创建一个开关(CameraStreamSwitch),它应该在打开时显示视频流(到Start)。

  2. 在App代码中创建如下函数,只要按下开关就会激活:

    % Value changed function: CameraStreamSwitch
    function CameraStreamSwitchValueChanged(app, event)
       while strcmp(app.CameraStreamSwitch.Value,'Start')
           im = image(app.UIAxes_2,zeros(size(snapshot(app.Camera)),'uint8'));
       preview(app.Camera,im);
       end
    end
    

现在,虽然显示实时更新的图形的其他数字正在工作,但这个数字显然不工作,即它被调整到正确的大小,但一直保持黑色(我已经检查过,从命令行(在应用程序之外)会弹出一个图形并显示一个正常工作的视频流)。我不确定问题是否与在应用程序中调用 preview 有关,我没有正确指定正确的图像或图像属性,或者我是否应该在应用程序中以较慢的帧速率简单地显示更少的图像。

有什么办法可以解决这个问题?

【问题讨论】:

  • 您使用应用程序设计器而不是“旧”数字是否有原因?这款相机可以使用其他软件吗?您能否创建一个显示相机流的网页?
  • 我的意图是使用 App Designer,因为该 App 显示另外两个图形,使用用户输入一些矩阵并在后台实时执行操作。这样,如果成功,我会将所有代码都放在一个应用程序中,然后我可以发布和使用。我不是开发人员,Matlab 是我最有信心的语言。这是一个一次性项目。非常感谢!

标签: matlab video webcam real-time-updates matlab-app-designer


【解决方案1】:

好的,这不是一个很好的解决方案,但我发现解决此问题的一种方法是使用imshow。

一个有效的代码如下:

% Value changed function: CameraStreamSwitch
function CameraStreamSwitchValueChanged(app, event)
    while strcmp(app.CameraStreamSwitch.Value,'Start')
          img = snapshot(app.Camera);
          imshow(img,'Parent',app.UIAxes2);
          pause(0.1);
    end
 end

您可以通过更改暂停时间来更改帧速率。

如果您有更好的解决方案,请告诉我!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多