PREVIEW函数有第二个输入参数,它允许您指定一个句柄图形图像对象,视频将在其中显示。
更多关于如何设置的信息可以在文档中找到:
预览数据::简介(图像采集工具箱)
如果您使用的是以前的版本,请阅读以下内容:
下面是一个GUI的例子,它提供了交互式使用图像采集工具箱功能的能力。
对于本例,将使用三个按钮在打开和关闭相机、捕捉快照图像和获取视频数据之间切换。通过按下图形的关闭按钮,可以随时关闭GUI。
创建这个GUI有两个步骤。
第一步。创建GUI的可视化实现
1.在MATLAB命令提示符处输入以下命令启动GUIDE:
2.在“GUIDE快速入门”对话框中,在“GUIDE模板”下,选择“空白GUI(默认)”并按“确定”。这将打开一个空白的GUI图形。
3.更改该图的以下属性。(您可以双击空白灰色图形区域的任何位置打开属性浏览器)
a.名称-改为“MyCameraGUI”
b.标签-更改为“MyCameraGUI”
c.单位-改为“像素”
d.位置,宽度-更改为400
e.位置,高度-更改为420
4.单击'CloseRequestFcn'右侧的按钮,在GUI关闭时自动生成一个回调函数。
5.在GUI中插入一个axis并修改其属性,如下所示:
a.标签-更改为“cameraAxes”
b.单位-改为“像素”
c.位置,x -变为40
d.位置,y -改为40
e.位置,宽度-更改为320
f.位置、高度-变为240
盒子-换成“上”
h. XTick -更改为'[]',删除所有条目。
(注意,这会自动将XTickMode更改为“手动”)。
i. XTickLabel -更改为通过高亮显示并删除所有条目。
(注意,这会自动将XTickLabelMode更改为“手动”)。
j. YTick -切换到'[]',删除所有条目。
(注意,这会自动将YTickMode更改为“手动”)。
k. YTickLabel -更改为通过高亮显示并删除所有条目。
(注意,这会自动将YTickLabelMode更改为“手动”)。
6.在GUI中插入一个Push Button并修改其属性,如下所示:
a.字符串-改为“开始相机”
b.标签-更改为“startStopCamera”
c.单位-改为“像素”
d.位置,x -变为20.
e.位置,y -改为320
f.位置,宽度-更改为120
g.位置,高度-更改为60
7.重复步骤6,修改如下:
a.字符串-改为“捕获图像”
b.标签-更改为“captureImage”
c.位置,x -变为140
8.重复步骤6,修改如下:
a.字符串-改为“开始收购”
b.标签-更改为“startAcquisition”
c.位置,x -变为260
9.保存GUI图形为“myCameraGUI.fig”。这将生成“myCameraGUI”。m”,我们将在第二步编辑。
第二步。适配GUI生成的代码
1.在“myCameraGUI_OpeningFcn”代码的“Update Handles Structure”部分之前插入以下代码,为摄像机创建视频对象。
句柄。视频=视频输入(“winvideo”1);
集(handles.video,“TimerPeriod”, 0.05,...
“TimerFcn”, (“如果(~ isempty (gco)),...
'处理= guidata (gcf);“...
图像(getsnapshot (handles.video)),“...
“集(handles.cameraAxes,“ytick”,[],“xtick”,[]),“...
“其他”...
“删除”(imaqfind);...
“结束”]);
triggerconfig (handles.video“手动”);
handles.video.FramesPerTrigger = Inf;
请注意,在上面的代码中传递给VIDEOINPUT命令的'adaptorname'参数将适用于Windows操作系统,对于其他操作系统必须进行适当的更改。
2.修改“UIWAIT makes myCameraGUI…”部分代码,使其如下所示:
uiwait (handles.myCameraGUI);
3.修改代码的“——Outputs from this function…”部分,使其如下所示:
函数varargout = myCameraGUI_OutputFcn(hObject, eventdata, handles)
句柄。输出= hObject;
{1} = handles.output;
3.修改代码中的“——execute on button press in startStopCamera.”部分,使其如下所示:
函数startStopCamera_Callback(hObject, eventdata, handles)
如果比较字符串(get (handles.startStopCamera,“字符串”),“开始相机”)
集(handles.startStopCamera,“字符串”,“停止相机”)
开始(handles.video)
集(handles.startAcquisition,“启用”,“上”);
集(handles.captureImage,“启用”,“上”);
其他的
集(handles.startStopCamera,“字符串”,“开始相机”)
停止(handles.video)
集(handles.startAcquisition,“启用”,“关闭”);
集(handles.captureImage,“启用”,“关闭”);
结束
4.修改“——execute on button press in captureImage.”部分代码,使其如下所示:
函数captureImage_Callback(hObject, eventdata, handles)
frame = get(get(handles.cameraAxes,“孩子”),cdata的);
保存(“testframe.mat”,“帧”);
disp ('帧保存到文件" testframe.mat ");
5.修改代码中的“——execute on button press in startAcquisition.”部分,使其如下所示:
函数starttion_callback (hObject, eventdata, handles)
如果比较字符串(get (handles.startAcquisition,“字符串”),“开始收购”)
集(handles.startAcquisition,“字符串”,“停止收购”);
触发(handles.video);
其他的
停止(handles.video);
disp (“保存捕获的视频……”);
Videodata = getdata(handles.video);
保存(“testvideo.mat”,“可视数据”);
disp (视频保存到文件" testvideo.mat ");
开始(handles.video);
集(handles.startAcquisition,“字符串”,“开始收购”);
结束
6.修改代码中的“当用户试图关闭myCameraGUI时执行”部分,使其如下所示:
函数myCameraGUI_CloseRequestFcn(hObject, eventdata, handles)
删除(hObject);
删除(imaqfind);
7.保存您对myCameraGUI.m所做的修改。
您现在应该能够通过在MATLAB命令提示符中输入以下命令来运行GUI:
相关文件可以在下面找到。