关于MATLAB调用摄像头的一些心得

        看到很多博主使用摄像头的一些代码和体会以及各种各样的问题,我做一个对于调用摄像头的总结。

1,imaqhwinfo

        显示可以使用的摄像头名称和相关适配器和MATLAB版本的信息。但是没有摄像头的信息。

(如果没有摄像头存在,是没有安装一个硬件支持包)

在这里获取安装包

 

2,

I = imaqhwinfo('winvideo');

I.DeviceInfo.SupportedFormats

%显示摄像头‘winvideo’的信息包括id,格式等等。

3,开启摄像头并显示一帧

vid = videoinput('winvideo',1,'YUY2_640x480'); 
%开启摄像头并选择参数
preview (vid); 
%显示画面 
frame = getsnapshot(vid); 
%获取一帧的图片
figure;
%建立一个图窗
imshow(frame);
%显示画面(提示:如果是YUY2_mxn则显示照片不是RGB图像,使用这种格式RGB24_352x288出现的才为RGB图像,前一种可以使用函数ycbcr2rgb来转换为rgb图像)

4,如果在app desigher中,使用上述代码,会出现一个新的图窗figure来进行显示,

想在axes控件上显示图像则要修改一下代码

app.vid = videoinput('winvideo',1,'YUY2_mxn');
%打开摄像头

set(app.UIAxes,'XLim',[0,m]);
%设置x坐标区域大小与分辨率一致
set(app.UIAxes,'YLim',[0,n]);
%设置y坐标区域大小与分辨率一致
vidRes = get(app.vid, 'VideoResolution');
%获取视频分辨率

nBands = get(app.vid, 'NumberOfBands');
%获取颜色通道数量,rgb为3
hImage = image(zeros(vidRes(2),vidRes(1),nBands),'parent',app.UIAxes);
%调用 image 函数创建一个包含 vidRes(2) × vidRes(1) × nBands 个元素的零矩阵,第三个参数则代表通道数。
%这个零矩阵被传递给 image 函数,并将其设置为 GUI 界面中某个 axes 对象(例如 handles.axes1)的底层图像。

preview(app.vid, hImage);
%显示到axes控件上(如果缺乏设置x和y区域的大小,则虽然摄像头显示在uiaxes中,但是变小了且位置是在右下方,而且是黑屏,无法显示画面)

将各位大佬的代码和问题做了一个总结吧。

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值