关闭带有实时视频输入的GUI时出错

3个视图(过去30天)
jstuda
jstuda 2016年11月15日
回答: jstuda2016年11月18日
我遵循了另一个问题的说明,在图形用户界面中获得了我的相机的实时预览,用于图像采集(见这里: 链接 ).唯一的区别是,我用的是Basler的GigE-Camera。当我关闭GUI时,我得到以下错误:
使用imaqdevice/getsnapshot出错(第65行)
图像采集对象OBJ已被删除。OBJ现在是无效对象。“
我还没有找到解决这个问题的方法。看起来,使用getsnapshot函数的Capture Image Button试图在相机对象停止并因此关闭后获取图像。即使是检查,如果摄像机对象正在运行
如果正在(handles.video)
getsnapshot (handles.video)
结束
发生错误。
有什么变通办法吗?谢谢你!
更新:今天我尝试检查图像采集对象是否存在,是否有效。只有当两个条件都为真时,触发按钮才应该获取视频对象的一帧。所以我使用:
如果~ isempty (imaqfind)
如果isvalid (handles.video)%处理。Video是视频输入对象
img=getsnapshot(handles.video)
结束
结束
但即使进行了安全检查,我还是会得到相同的错误!我有点困惑,尽管我认为一个按钮的回调函数只在按钮按下执行。这种行为与我对回调函数的理解不一致。

接受的答案

jstuda
jstuda 2016年11月18日
我找到了答案,所以我把它贴在这里给其他有同样问题的人。本教程用于在GUI窗口中进行实时视频预览
uiwait (handles.figure1)
用于阻止其他程序的执行。因此,当GUI已关闭时,输出数据被写入,这意味着像视频对象一样的句柄已被删除,并且输出数据无法获取有关此对象的任何信息,因为它不再存在。通过添加
uiresume ()
在CloseRequestFcn中的任何其他命令之前。输出数据是在GUI仍然打开时写入的,因此对象仍然存在,并且对输出函数有效。

答案(1)

马杜拉·苏雷什
马杜拉·苏雷什 2016年11月15日
在你的if条件中有一个打印错误:
应该用isrunning,而不是isrunging。
这还会失败吗?
1评论
jstuda
jstuda 2016年11月16日
我仔细检查了我的文件,那里的条件是否正确。因此,拼写错误仅出现在上述错误解释中,这意味着即使有正确的if条件,也会出现错误。(我更正了解释中的条件)

登录评论。

标签

下载188bet金宝搏

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始打猎吧!