[英]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.