vue-cli 获取video 第一帧图片_Matlab上位机开发(四)Matlab获取自带摄像头或者USB摄像头数据...

1. 两种获取摄像头的方式

Matlab自身不支持直接读取摄像头数据,需要安装硬件支持包才可以获取,目前常用的有两个包:1367768aec50b98e3575c6e45a9b8239.png

第一个是 MATLAB Support Package for USB Webcams,这个包可以获取任何USB摄像头的图像(UVC),也可以获取电脑自带摄像头的数据,兼容 R2014a 到 R2020a 的版本。

第二个是Image Acquisition Toolbox Support Package for OS Generic Video Interface,更加通用,它也兼容 R2014a 到 R2020a 的版本。(推荐)

2. 使用Image Acquisition Toolbox

2.1. 安装硬件支持包

首先执行这条命令打开摄像头,测试是否可以调用videoinput函数:

video_source = videoinput('winvideo',1)

如果出现图中的错误,那么恭喜你,需要手动安装硬件支持包了。90a3340b86014f43bfdd4cc98b1ed568.png点击获取附加功能中的获取硬件支持包:ae7c0bbb6c0bfadfd1f8911a01ce4036.png按照图中所示找到该支持包:13c8152f656380f573863124b19dc036.png

安装支持包:638da6f56a07aa776d9a942bd384fce4.png92f1b1f076016f7164749b8f49dc8529.png

这个安装之前需要登录Matlab账号,安装过程也比较慢。

2.2. 玩转摄像头

① 查看电脑上已经安装的图像适配器 Matlab的图像获取工具箱(第一步安装的硬件支持包)中提供了函数,可以获取查询当前PC上已经连接的摄像头信息,函数如下:

imaqhwinfo()

233d12fbe5f8d6499093724ae912f110.png其中InstalledAdaptors的值给出了当前电脑上已经安装的摄像头适配器个数,这里我的电脑上只有一个:winvideo

② 查看摄像头设备具体参数 使用该命令查看上一步获取到的图像适配器的具体参数:

win_info = iimaqhwinfo('winvideo')
a2c7e70b261a4225e73536083941b2e8.png

可以看到其中给出了该图像适配器具体的一些参数,特别需要注意的是,该函数返回了连接在当前图像适配器winvideo上的所有摄像头的设备ID和设备信息

当前我的电脑上一共有两个摄像头,一个是笔记本电脑内置的摄像头,另一个是我连接的USB 2.0 摄像头,接下来以USB摄像头为例,说明如何查看摄像头的设备ID和具体信息:

在工作区找到保存信息的变量win_info,双击查看其值:

43ba4c2f0253317187cd8a43b9dde9b0.png

可以看到,两个摄像头的设备ID分别为1和2,一般来说,电脑内置的摄像头的ID为1。

同样,双击win_info.DeviceInfo变量,可以查看摄像头的具体参数:6f6fc46459584565f02012d781c6b81a.png

这里摄像头支持的格式有40多种,不方便查看,我们可以在命令行查看:

win_info.DeviceInfo.SupportedFormats
064e95fb24795bace57210969b7c99a2.png

③ 创建视频输入对象

使用如下的命令来创建一个视频输入对象:

video_obj = videoinput(adaptorname,deviceID,format)

该函数的三个参数说明如下:

  • adaptorname:适配器名称(必须)
  • deviceID:设备ID号(必须)
  • format:视频采集格式(不填写则使用默认)

如下,我要创建USB摄像头的视频输入对象:

video_obj = videoinput('winvideo',2)
b08c421ac870868278b2f8a280812867.png

④ 预览视频对象 使用如下命令即可预览视频对象,该函数会自动打开一个窗口,播放摄像头画面:

preview(video_obj)
5de1a87584b8ce8bae0b3d74c6031263.png

3. 使用USB Webcams包

3.1. 安装硬件支持包

点击获取附加功能中的获取硬件支持包:ae7c0bbb6c0bfadfd1f8911a01ce4036.png按照图中所示找到该支持包:633d5d5bd96a2f2109abc4b20c79d6e5.png

安装支持包:5a43b3ba3ed7bb62cba6ee8924af3f29.png

这个包不需要授权,只需要安装之前登录Matlab账号即可,安装过程非常快。

3.2. 玩转摄像头

① 查看当前摄像头设备列表

webcamlist
41f6f4432667806ca96e2f3b4dcdee2b.png

需要注意,使用webcam的时候,下标从1开始,1对应USB Camera,2对应Integrated Camera。

② 获取视频对象 一行代码即可获取,非常舒服,比如获取外接USB摄像头的输入对象:

cam1 = webcam(1)

4838c432ac8afa72ce06e480c72ec58c.png同样可以获取电脑自带摄像头的输入对象:

cam1 = webcam(2)
2382256dfc15dcd0dca5ddc92fb143ac.png

③ 预览视频对象 使用如下命令即可预览视频对象,该函数会自动打开一个窗口,播放摄像头画面:

preview(cam1)
b6b69c07ee82cbc9ebc7650513e49026.png

④ 查看摄像头支持的分辨率并修改:

.AvailableResolutions

a286c3029a2d80999bbd80061208e077.png然后根据修改为需要的分辨率:

.Resolution = 

a14c5f80d7833c67698d5cdec3bc6377.png再次preview之后即可看到分辨率改变。

⑤ 用完之后清除对象

clear 

4. 在GUI中显示视频流并拍照

在Gui界面中显示视频流尽量使用Image Acquisition Toolbox。

4.1. 拖动控件,设计界面

在命令行输入guide启动设计界面,新建一个设计文件。

设计的界面如下:

aa2f2f439bee898557788e197bd52d68.png

4.2. 实时显示摄像头画面

点击开启按钮后,在第一个坐标区实时显示摄像头画面,回调函数代码如下:

首先创建一个全局的视频输入对象:

global video_obj;
video_obj = videoinput('winvideo', 2, 'YUY2_640x480');

然后设置图像格式为RGB:

set(video_obj,'ReturnedColorSpace','rgb');

获取视频输入对象的信息,用于在坐标区显示:

videoRes = get(video_obj, 'VideoResolution');
nBands = get(video_obj, 'NumberOfBands');

转换,将视频输入对象与坐标区控件关联起来:

hImage = image(zeros(videoRes(2), videoRes(1), nBands),'parent',handles.axes1);

开始显示:

preview(video_obj,hImage);
start(video_obj);

完整的代码如下:

global video_obj;
video_obj = videoinput('winvideo', 2, 'YUY2_640x480');
set(video_obj,'ReturnedColorSpace','rgb');
videoRes = get(video_obj, 'VideoResolution');
nBands = get(video_obj, 'NumberOfBands');
hImage = image(zeros(videoRes(2), videoRes(1), nBands),'parent',handles.axes1);
preview(video_obj,hImage);
start(video_obj);

接下来启动后,点击开启按钮,就可以在第一个坐标区看到摄像头实时画面了。

4.3. 关闭摄像头实时显示

点击关闭按钮后,关闭在第一个坐标区实时显示的摄像头画面,回调函数代码如下:

global video_obj;
stop(video_obj);
closepreview(video_obj);
delete(video_obj);

接下来启动后,点击关闭按钮,就可以关闭在第一个坐标区看到摄像头实时画面了。

4.4. 拍照(抓取画面)

点击拍照按钮,即可抓取当前视频流的画面,显示在第二个坐标区控件,回调函数代码如下:

global video_obj
mypic = getsnapshot(video_obj);
axes(handles.axes2);
imshow(mypic);

如果需要对抓取的图片进行处理,则将图片变量mypic设为全局变量!

启动后即可看到效果。

推荐阅读:

Matlab上位机开发(一) —— 了解上位机

Matlab上位机开发(二) —— HelloWorld

Matlab上位机开发(三) —— 波形显示

接收更多精彩文章及资源推送,欢迎订阅我的微信公众号:『mculover666』。e76aea32d7b687003f69529f4ab87be2.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值