Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 在应用程序设计器图形中显示视频流_Matlab_Video_Webcam_Real Time Updates_Matlab App Designer - Fatal编程技术网

Matlab 在应用程序设计器图形中显示视频流

Matlab 在应用程序设计器图形中显示视频流,matlab,video,webcam,real-time-updates,matlab-app-designer,Matlab,Video,Webcam,Real Time Updates,Matlab App Designer,我正在开发一个简单的app-in-app-Designer应用程序,我一直在努力从网络摄像头中获取视频流 我遇到过以下帖子,但到目前为止,我的应用程序无法正常运行: 到目前为止,我正在做的是: 在GUI中创建轴对象。这是第二个图形,因此它会自动标记为app.UIAxes2 在我的启动功能中包括以下命令: app.Camera = webcam; %('USB2.0 PC CAMERA') image(app.UIAxes2,zeros(size(snapshot(app.Camera)),'u

我正在开发一个简单的app-in-app-Designer应用程序,我一直在努力从网络摄像头中获取视频流

我遇到过以下帖子,但到目前为止,我的应用程序无法正常运行:

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

  • 在GUI中创建轴对象。这是第二个图形,因此它会自动标记为
    app.UIAxes2

  • 在我的启动功能中包括以下命令:

    app.Camera = webcam;  %('USB2.0 PC CAMERA')
    image(app.UIAxes2,zeros(size(snapshot(app.Camera)),'uint8'));
    
  • 其中,
    app.Camera
    是我的相机对象(我已经在类中包含了属性),第二个命令应该将图像调整为相机视频流大小。我可能错了

  • 创建一个开关(
    CameraStreamSwitch
    ),该开关应在打开时显示视频流(至
    Start

  • 在应用程序代码中创建以下功能,该功能在按下开关时激活:

    % 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
    有关,我没有正确指定正确的图像或图像属性,或者我是否应该在应用程序中以较慢的帧速率显示较少的图像


    如何解决这个问题?

    好的,这不是一个很好的解决方案,但我发现解决这个问题的一个方法是使用
    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
    
    您可以通过更改暂停时间来更改帧速率


    如果您有更好的解决方案,请让我知道

    你使用appdesigner而不是“老”数字有什么原因吗?这台相机使用其他软件工作吗?你能创建一个显示摄像机流的网页吗?我打算使用App Designer,因为该应用程序显示其他两个图形,使用用户输入的一些矩阵,并在后台实时执行操作。这样,如果成功的话,我将把所有代码都放在一个应用程序中,然后发布和使用。我不是开发人员,Matlab是我最有信心的语言。这是一个一次性的项目。非常感谢!