簡體   English   中英

在App Designer圖中顯示視頻流

[英]Display a Video Stream in an App Designer Figure

我正在使用App Designer開發一個簡單的應用程序,並且一直在努力包含來自網絡攝像頭的視頻流。

我遇到過以下帖子,但到目前為止,我的應用無法正常運行: https : //uk.mathworks.com/matlabcentral/answers/357814-how-to-create-a-custom-preview-窗口換MATLAB的網絡攝像頭

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

  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有關,我沒有正確指定正確的圖像或圖像屬性,還是在應用程序中以較低的幀頻顯示較少的圖像。

如何解決這個問題?

好的,不是一個很好的解決方案,但是我發現解決此問題的一種方法是使用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

您可以通過更改暫停時間來更改幀頻。

如果您有更好的解決方案,請告訴我!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM