我怎么能插入视频直播MATLAB GUI使用图像采集的工具箱?

60视图(30天)
我让一个图形用户界面,我想从我的相机实时视频插入一个轴在我的GUI使用图像采集工具。从本质上讲,我想预览功能的功能在我的GUI。

接受的答案

MathWorks支万博1manbetx持团队
编辑:MathWorks支万博1manbetx持团队 2022年10月14日
预览功能的第二个输入参数允许您指定一个句柄图形图像对象的视频将会显示。
如何设置这个的更多信息可以在文档:
预览数据::介绍(图像采集工具箱)
如果您使用的是以前的版本中,阅读下面的:
这里是一个GUI提供使用图像采集的工具箱函数交互的能力。
对于这个示例,三个按钮将被用来打开和关闭相机之间的切换,捕获快照图像,获取视频数据。GUI可以在任何时候关闭按图的关闭按钮。
有两个步骤创建这个GUI。
第一步。创建GUI的可视化实现
1。在MATLAB入门指南通过输入下面的命令提示符:
指南
2。在指导快速启动对话框中,在指导模板,选择空白的GUI(默认)和按下OK。这将打开一个空白的界面图。
3所示。改变以下属性的图。(你可以在任何地方双击空白,灰色图区域属性浏览器打开)
一个名字-改变“MyCameraGUI”
b。标签——改变“MyCameraGUI”
c。单位——改变“像素”
d。位置、宽度变化400年
e。位置,高度,改变420年
4所示。单击按钮右边的“CloseRequestFcn”GUI关闭时自动生成一个回调函数。
5。一个轴插入您的GUI和修改它的属性如下:
一个标签-改变“cameraAxes”
b。单位——改变“像素”
c。位置,x -改变40
d。位置,y -改变40
e。位置、宽度变化320年
f。位置,高度,改变240年
g。盒子——改变“上”
h。XTick——改变“[]”删除所有条目。
(注意这XTickMode自动变化“手动”)。
我,XTickLabel——改变“通过强调和删除所有条目。
(注意这XTickLabelMode自动变化“手动”)。
j。YTick——改变“[]”删除所有条目。
(注意这YTickMode自动变化“手动”)。
k。YTickLabel——改变“通过强调和删除所有条目。
(注意这YTickLabelMode自动变化“手动”)。
6。GUI按钮插入和修改它的属性如下:
一个字符串-改变“开始相机”
b。标签——改变“startStopCamera”
c。单位——改变“像素”
d。位置,x -改变20.
e。位置,y -改变320年
f。位置、宽度变化120年
g。位置,高度,改变60
7所示。重复步骤6以下变化:
一个字符串-改变“捕获图像”
b。标签——改变“captureImage”
c。位置,x -改变140年
8。重复步骤6以下变化:
一个字符串-改变“开始收购”
b。标签——改变“startAcquisition”
c。位置,x -改变260年
9。将GUI图保存为“myCameraGUI.fig”。这将生成“myCameraGUI。m”,我们将在第二步编辑。
第二步。调整生成的代码的GUI
1。插入以下代码之前“更新处理结构”部分的代码“myCameraGUI_OpeningFcn”创建摄像机的视频对象。
%创建视频对象
%将对象放入,然后手动触发模式
%启动对象将GETSNAPSHOT返回更快
%因为连接到相机
%建立。
句柄。视频= videoinput (“winvideo”1);
集(handles.video,“TimerPeriod”,0.05,
“TimerFcn”,(“如果(~ isempty (gco)),
'处理= guidata (gcf);“%更新处理
图像(getsnapshot (handles.video)),“%得到图片使用GETSNAPSHOT和把它放到轴使用的形象
“集(handles.cameraAxes,“ytick”, [],“xtick”, []),“%去除tickmarks和标签使用图像时插入
“其他”
“删除”(imaqfind);%清理,删除任何图像采集对象
“结束”]);
triggerconfig (handles.video“手动”);
handles.video。FramesPerTrigger =正;%捕捉帧直到手动停止
请注意,“adaptorname”参数传递到VIDEOINPUT命令在上面的代码将为Windows操作系统和工作必须进行相应的更改对其他操作系统。
2。修改“UIWAIT myCameraGUI…”部分的代码,这样读起来如下:
% UIWAIT使myCameraGUI等待用户响应(见UIRESUME)
uiwait (handles.myCameraGUI);
3所示。修改“——从这个函数输出…”部分的代码,这样读起来如下:
% - - - - - -从这个函数返回输出到命令行。
函数varargout = myCameraGUI_OutputFcn (hObject eventdata处理)
% varargout细胞数组返回输出参数(见varargout);
% hObject图的句柄
% eventdata保留——MATLAB的未来版本中定义
%处理结构处理和用户数据(见GUIDATA)
%得到默认命令行输出处理结构
句柄。输出= hObject;
varargout {1} = handles.output;
3所示。在按钮按下修改”- - - - - -执行startStopCamera。”部分的代码,这样读起来如下:
函数startStopCamera_Callback (hObject eventdata处理)
% hObject句柄startStopCamera(见GCBO)
% eventdata保留——MATLAB的未来版本中定义
%处理结构处理和用户数据(见GUIDATA)
%启动/停止相机
如果比较字符串(get (handles.startStopCamera,“字符串”),“开始相机”)
%相机。改变按钮字符串并启动相机。
集(handles.startStopCamera,“字符串”,“停止相机”)
开始(handles.video)
集(handles.startAcquisition,“启用”,“上”);
集(handles.captureImage,“启用”,“上”);
其他的
%的相机。停止相机和改变按钮的字符串。
集(handles.startStopCamera,“字符串”,“开始相机”)
停止(handles.video)
集(handles.startAcquisition,“启用”,“关闭”);
集(handles.captureImage,“启用”,“关闭”);
结束
4所示。在按钮按下修改”- - - - - -执行captureImage。”部分的代码,这样读起来如下:
函数captureImage_Callback (hObject eventdata处理)
% hObject句柄captureImage(见GCBO)
% eventdata保留——MATLAB的未来版本中定义
%处理结构处理和用户数据(见GUIDATA)
% = getsnapshot帧(handles.video);
帧= get (get (handles.cameraAxes,“孩子”),cdata的);%显示当前帧
保存(“testframe.mat”,“帧”);
disp (“帧保存到文件“testframe.mat””);
5。在按钮按下修改”- - - - - -执行startAcquisition。”部分的代码,这样读起来如下:
函数startAcquisition_Callback (hObject eventdata处理)
% hObject句柄startAcquisition(见GCBO)
% eventdata保留——MATLAB的未来版本中定义
%处理结构处理和用户数据(见GUIDATA)
%启动/停止采集
如果比较字符串(get (handles.startAcquisition,“字符串”),“开始收购”)
%的相机不是收购。改变按钮的字符串并开始收购。
集(handles.startAcquisition,“字符串”,“停止收购”);
触发(handles.video);
其他的
%相机获取。停止采集,保存视频数据,
%,改变按钮的字符串。
停止(handles.video);
disp (“拯救捕获视频…”);
可视数据= getdata (handles.video);
保存(“testvideo.mat”,“可视数据”);
disp (“视频保存到文件“testvideo.mat””);
开始(handles.video);%重新启动相机
集(handles.startAcquisition,“字符串”,“开始收购”);
结束
6。修改“执行当用户试图关闭myCameraGUI。”部分的代码,这样读起来如下:
函数myCameraGUI_CloseRequestFcn (hObject eventdata处理)
% hObject句柄myCameraGUI(见GCBO)
% eventdata保留——MATLAB的未来版本中定义
%处理结构处理和用户数据(见GUIDATA)
%提示:删除(hObject)关闭图
删除(hObject);
删除(imaqfind);
7所示。myCameraGUI.m保存所作的修改。
您现在应该能够运行MATLAB的GUI通过输入下面的命令提示符:
myCameraGUI
下面可以找到相关文件。
4评论
迈克尔·C
迈克尔·C 2015年8月4日
你好,
我经历了这个例子,发现一个问题。事实上,简单地下载文件有问题。我双击视频时,冻结,导致视频/图像采集对象的删除。谁能向我解释为什么这是发生了什么?我一直使用这个例子构建自己的GUI,但我有同样的问题。
有办法重置和图像采集对象初始化而在GUI工作吗?我的想法是把另一个if语句的启动/停止按钮来检查视频是否运行(正在函数)或有效(isvalid函数),完全删除图像对象,和复制/粘贴打开函数初始化并启动视频。但到目前为止,我没能得到那个工作。
任何想法都是有益的。
谢谢,
迈克尔

登录置评。

更多的答案(6)

Prashant
Prashant 2015年4月13日
嗨. .程序工作得很好。但谁能建议我如何查看相同的gui捕获的图像吗?



11时
11时 2019年6月26日
先生,我有一个问题,“我如何打印文本数据摄像头视频”。有什么解决方案吗? ? ?


社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的