在App Designer中显示视频流图

问题描述 投票:0回答:1

我正在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. 在应用程序代码中创建以下功能,只要按下开关即可激活该功能: % 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有关,我没有正确指定正确的图像或图像属性,或者我是否应该在应用程序中以较慢的帧速率显示较少的图像。

可以做些什么来解决这个问题?

matlab video webcam real-time-updates matlab-app-designer
1个回答
0
投票

好的,不是一个很好的解决方案,但我发现解决这个问题的一种方法是使用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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.