我是靠谱客的博主 激动镜子,最近开发中收集的这篇文章主要介绍如何使用MATLAB调用摄像头—代码详解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

大家也可以加我的交流群,所有资料我会在群里分享出来哦:977947271
2020/5/30:
近日每天都有十几个很明显的小号加群,而且有的大号进群竟然打广告和卖不良物品,经我和群友讨论后,加群需要1元钱,但是进群后我会将钱退还给大家,只是为了过滤一些不好的人。

最近在做关于图像识别的项目。

接触了MATLAB的许多操作,在这里做下关于调用笔记本摄像头的笔记。

首先需要了解imaqhwinfo函数,在命令行输入imaqhwinfo就可以看到自己笔记本相关适配器和MATLAB版本的信息.但并不能看到摄像头的信息。

>>imaqhwinfo
ans =  
   包含以下字段的struct:
 
       InstalledAdaptors:  {'winvideo'}
           MATLABVersion:  '9.4 ( R2018a ) '
             ToolboxName: 'Image Acquisition Toolbox'
          ToolboxVersion: '5.4 (R2018a)'`

想要了解摄像头的信息就需要在imaqhwinfo中添加相关函数

>>imaqhwinfo('winvideo')

下面是适配器相关信息

ans = 
  包含以下字段的struct:
  
      AdaptorDllName: 'C:MATLABmwwinvideoimaq.dll'
   AdaptorDllVersion: '5.4 (R2018)'
         AdaptorName: 'winvideo'
           DeviceIDs: {[1]}
          DeviceInfo: [1×1 struct]

imaqhwinfo()返回的是一个结构体,其中 DeviceID 和 DeviceInfo比较重要。DeviceID 储存着电脑上所有可用摄像头的ID,每个ID对应着电脑可用的一个摄像头;DeviceInfo 里面储存着摄像头的信息,就是我们平时所说的视频格式。

下面以我的电脑为例:

使用 DeviceInfo.DeviceID 可以看到摄像头的 ID 为 1

>>I = imaqhwinfo('winvideo');
>>I.DeviceInfo.DeviceID
 ans =
 	1

使用 DeviceInfo.SupportedFormats 函数可得到我的摄像头支持的格式是
{‘YUY2_160x120’} {‘YUY2_320x240’} {‘YUY2_640x480’}这三种。

>>I = imaqhwinfo('winvideo');
>>I.DeviceInfo.SupportedFormats
ans =
     1×3cell 数组
     {'YUY2_160x120'}    {'YUY2_320x240'}    {'YUY2_640x480'}

调用摄像头注意这个函数 videoinput(adaptorname,deviceID,format)

如果我使用ID为 ‘1’ 的摄像头,格式选择为{‘YUY2_640x480’},

那么代码为

videoinput('winvideo',1,'YUY2_640x480')

下面上简单的代码:

vid = videoinput('winvideo',1,'YUY2_640x480');   %选择摄像头和格式
preview (vid);    			%显示vid函数中摄像头拍摄的画面
frame = getsnapshot(vid);   			%获取每一帧的图片
figure;imshow(frame);   		%在figure中显示出摄像头拍摄的画面
	%如果想保存图片可以使用下面的函数
	%但这种函数保存打开摄像头那一瞬间的图片
	%有时间我将介绍如何使用gui去实现随时拍照的代码,
imwrite(frame,'A.png');

下面是微微复杂点的代码,一般在实战中会用到,单纯是想玩的话,上面的代码已经够了。

obj = videoinput('winvideo',1,'YUY2_640×480')%winvideo'由函数imaqhwinfo查出
set(vid,'FramesPerTrigger',1);
%FramesPerTrigger用特定的帧数去捕获选定的视频 
set(vid, 'TriggerRepeat', Inf);
%不断地触发TriggerRepeat,以上代码一般不需要改动
set(vid,'ReturnedColorSpace','rgb');
%设置返回的视频颜色,‘rgb’是正常颜色,需要返回其他色彩可以在做改动
vidRes=get(obj,'VideoResolution');         
%获得视频的长与宽,是二维数组
nBands=get(obj,'NumberOfBands');           
%获得图像的颜色层数
hImage=image(zeros(vidRes(2),vidRes(1),nBands));
%获得图像的句柄
preview(obj,hImage);
%以上是我对这些代码的理解,具体情况在这里就没法细说了

这里就把简单的介绍完了。

建议有需要的朋友使用GUI去实现对视频、图片的播放、保存、并做相应处理的操作。

有时间我会把我的项目再深入介绍一下如何对这些进行操作,如果有感兴趣的朋友也可以联系我。

最后

以上就是激动镜子为你收集整理的如何使用MATLAB调用摄像头—代码详解的全部内容,希望文章能够帮你解决如何使用MATLAB调用摄像头—代码详解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部