[英]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的網絡攝像頭
到目前為止,我正在做的是:
在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
您可以通過更改暫停時間來更改幀頻。
如果您有更好的解決方案,請告訴我!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.