Matlab摄像头基本操作解读.docx
- 文档编号:24630578
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:18
- 大小:22.93KB
Matlab摄像头基本操作解读.docx
《Matlab摄像头基本操作解读.docx》由会员分享,可在线阅读,更多相关《Matlab摄像头基本操作解读.docx(18页珍藏版)》请在冰豆网上搜索。
Matlab摄像头基本操作解读
Matlab摄像头基本操作
分类:
matlab(机器人视觉SLAM项目)2012-09-2609:
48529人阅读评论(0)收藏举报
matlabinputparametersimagevideoproperties
Matlab中的图像获取工具箱给我们提供了必要的函数,我们直接调用就可以了。
在在这帖中我们主要就是简单的介绍如何使用该工具箱进行对USB2.0摄像头的编程
废话不多说,我们开始言归正传了。
但是一定记住你必须安装了PC摄像头才可以进行下面的东西,如果说首次安装摄像头最好重启下PC,否则可能出现没法识别摄像头。
整个过程我们需要做如下几件事情:
1、查询USB2.0Camera的具体参数(imaqhwinfo)
2、创建视频输入对象(videoinput)
3、图像预览和显示(preview、stoppreview、closepreview和image)
4、获取视频图像(getsnapshot)
5、图像获取设备的获取和设置(get和set)
6、关闭视频对象(delete)
在正式讲解之前,我想说明下几个个在图像获取工具箱中的术语:
图像获取设备:
比如摄像头、扫描仪
图像获取适配器:
主要的目的是通过驱动在Matlab和图像获取设备之间传递信息
ROI:
region-of-interest感兴趣区域
在说说几个常用的函数,我们这里只是说明它的作用,具体如何使用参考帮助系统
getselectedsource
imaqfind
isvalid
peekdata
getdata
imaqmontage
给我们一个摄像头我们必须知道他的相关参数,才可能进行我们的编程下。
当然我们可以查询商家手册,但是那个累不累人呀。
Matlab的图像获取工具箱为我提供了imaqhwinfo(),来获取PC上以安装的图像获取硬件信息
没有输入参数时,返回一个结构体,它包含了系统中存在的适配器和Matlab相关的版本信息(第一次我们一般使用这个)
代码:
>>info=imaqhwinfo
info=
InstalledAdaptors:
{'coreco' 'winvideo'}%这里可以看到我的PC上安装了两个适配器
MATLABVersion:
'7.6(R2008a)'
ToolboxName:
'ImageAcquisitionToolbox'
ToolboxVersion:
'3.1(R2008a)'
有输入参数的时候,返回一个结构体,包含了指定的适配器的数据信息
代码:
>>win_info=imaqhwinfo('winvideo')%我们看看第二适配器的具体参数
win_info=
AdaptorDllName:
[1x81char]%适配器dll文件绝对路径
AdaptorDllVersion:
'3.1(R2008a)'%适配器dll文件版本
AdaptorName:
'winvideo'%s适配器名称
DeviceIDs:
{[1]}%设备ID号,这个我们经常需要用到
DeviceInfo:
[1x1struct]%设备信息,这里主要是图像获取设备的一些参数,比较重要
%====================下面我们了解下,这个图像获取设备到底有哪些的详细信息吧====================
>>win_info.DeviceIDs
ans=
[1]
>>dev_win_info=win_info.DeviceInfo
dev_win_info=
DefaultFormat:
'RGB24_320x240'%获取图片的默认格式
DeviceFileSupported:
0
DeviceName:
'USBPCCAMERAP227'%设备名称
DeviceID:
1%设备号
ObjectConstructor:
'videoinput('winvideo',1)'%对象构建方式,这个绝大部分都是一样的
SupportedFormats:
{1x12cell}%获取的图像支持格式,一般都有好多种,上面的DefaultFormat只是默认格式而已
%==================================看看图像获取设备支持的图像格式==================================
>>dev_win_info.SupportedFormats%可以看到我的PC上的摄像头支持下面12中图片格式
ans=
Columns1through5
'I420_160x120' 'I420_176x144' 'I420_320x240' 'I420_352x288' 'I420_640x480'
Columns6through9
'RGB24_1280x960' 'RGB24_160x120' 'RGB24_176x144' 'RGB24_320x240'
Columns10through12
'RGB24_352x288' 'RGB24_640x480' 'RGB24_800x600'
视频预览、采集和保存
(1)创建视频输入对象
obj=videoinput(adaptorname,deviceID,format)
adaptorname:
适配器名称,首次可以使用不带参数的imaqhwinfo函数获取
deviceID:
设备ID号,首次可以通过imaqhwinfo函数获取
format:
视频采集格式,可以通过DeviceInfo的SupportedFormats获取,不填写则使用默认格式
代码:
>>obj=videoinput('winvideo',1,'RGB24_320x240')%这里我们使用默认的视频采集格式
SummaryofVideoInputObjectUsing'USBPCCAMERAP227'.
AcquisitionSource(s):
input1isavailable.
AcquisitionParameters:
'input1'isthecurrentselectedsource.
10framespertriggerusingtheselectedsource.
'RGB24_320x240'videodatatobeloggeduponSTART.
Grabbingfirstofevery1frame(s).
Logdatato'memory'ontrigger.
TriggerParameters:
1'immediate'trigger(s)onSTART.
Status:
WaitingforSTART.
0framesacquiredsincestarting.
0framesavailableforGETDATA.
(2)打开视频预览窗口
himage=preview(obj,himage)
obj:
视频采集对象
himage:
视频预览窗口对应的句柄,也就是说在指定的句柄对象中预览视频,该参数可以空缺
至于预览窗口的关闭和停止可以使用colsepreview和stoppreview函数
代码:
vidRes=get(obj,'VideoResolution');
nBands=get(obj,'NumberOfBands');
figure()%指定预览窗体显示的figure
axes()%指定预览窗口显示的坐标系
hImage=image(zeros(vidRes
(2),vidRes
(1),nBands));
preview(obj,hImage);
(3)图像捕捉、显示和保存
代码:
%frame是H×W×B的矩阵。
H图像高度,由ROIPosition指定;w图像宽度,由ROIPosition指定;B索线个数,由NumberOfBands指定
frame=getsnapshot(obj);
imshow(frame);
imwrite(fame,'snap.jpg','jpg');
实验步骤
1、查询USB2.0Camera的具体参数
输入imaqInfo=imaqhwinfo
返回信息
InstalledAdaptors:
{'winvideo'}
MATLABVersion:
'7.1(R14SP3)'
ToolboxName:
'ImageAcquisitionToolbox'
ToolboxVersion:
'1.9(R14SP3)'
输入imaqInfo.InstalledAdaptors
返回信息
ans=
'winvideo'
输入winvideoinfo=imaqhwinfo('winvideo')
返回信息
winvideoinfo=
AdaptorDllName:
[1x76char]
AdaptorDllVersion:
'1.9(R14SP3)'
AdaptorName:
'winvideo'
DeviceIDs:
{[1]}
DeviceInfo:
[1x1struct]
输入winvideoinfo.DeviceInfo
返回信息
ans=
DefaultFormat:
'YUY2_160x120'
DeviceFileSupported:
0
DeviceName:
'USB视频设备'
DeviceID:
1
ObjectConstructor:
'videoinput('winvideo',1)'
SupportedFormats:
{1x5cell}
输入device1=winvideoinfo.DeviceInfo
(1)
返回信息
device1=
DefaultFormat:
'YUY2_160x120'
DeviceFileSupported:
0
DeviceName:
'USB视频设备'
DeviceID:
1
ObjectConstructor:
'videoinput('winvideo',1)'
SupportedFormats:
{1x5cell}
输入device1.DeviceName
返回信息
ans=
USB视频设备
输入device1.DeviceID
返回信息
ans=
1
输入device1.DefaultFormat
返回信息
ans=
YUY2_160x120
输入device1.SupportedFormats
返回信息
Columns1through4
'YUY2_160x120' 'YUY2_176x144' 'YUY2_320x240' 'YUY2_352x288'
Column5
'YUY2_640x480'
2、最简单采集实验,输入如下代码,可以得到预览下的默认格式的摄像头捕捉窗口obj=videoinput('winvideo',1);
preview(obj);
3、输入如下代码
vidobj=videoinput('winvideo',1,'YUY2_640x480');
sources=vidobj.Source;
whossources
set(vidobj,'SelectedSourceName','input1');
sources
selectedsrc=getselectedsource(vidobj);
get(selectedsrc);
delete(vidobj);
clearvidobj;
返回信息
Name Size BytesClass
sources 1x1 726videosourceobject
Grandtotalis30elementsusing726bytes
DisplaySummaryforVideoSourceObject:
Index:
SourceName:
Selected:
1 'input1' 'on'
GeneralSettings:
Parent=[1x1videoinput]
Selected=on
SourceName=input1Tag=
Type=videosource
DeviceSpecificProperties:
BacklightCompensation=on
Brightness=-16
Contrast=120
FrameRate=30.0000
Gamma=60
Hue=0
Saturation=40
Sharpness=3
4、输入如下代码
clc;
clf;
clearall;
imaqmem(30000000); %申请内存空间
%ADAPTOR:
MATLAB与视频设备之间的接口,主要的目的是传递信息
vid=videoinput('winvideo',1,'YUY2_640x480');
preview(vid);
start(vid);
h=figure('NumberTitle','off','Name','视频',...
'MenuBar','none','color','c',...
'Position',[0,0,1,1],'Visible','on'); %新建窗口
set(h,'doublebuffer','on','outerposition',get(0,'screensize'));
h1=axes('Position',[0.02,0.1,0.4,0.8],'Parent',h);%新建显示窗口
holdon;
axisoff;
whileishandle(h) %判断是否有效的图像对象句柄
a=getsnapshot(vid); %捕获图像
flushdata(vid); %清除数据获取引擎的所有数据、置属性SamplesAvailable为0
imshow(a); %显示图像
drawnow; %实时更新图像
end;
delete(vid);
matlab视频工具箱常用函数
窗体顶端
窗体顶端
视频显示
vision.DeployableVideoPlayer发送视频数据到电脑屏幕上
vision.VideoPlayer播放视频或显示图像序列
视频文件I / O
vision.BinaryFileReader读取视频数据从二进制文件
vision.BinaryFileWriter写入二进制视频数据文件
vision.VideoFileReader浏览视频和/或从一个视频文件的音频取样
vision.VideoFileWriter视频帧写入到视频文件和音频样本
特征检测,提取和匹配
MSERRegions对象的存储MSER区域
SURFPoints对象的存储SURF兴趣点
vision.BoundaryTracer跟踪对象的二进制图像边界
vision.CornerDetector角的度量矩阵和角点检测
vision.EdgeDetector查找图像中的物体边缘
目标检测
vision.CascadeObjectDetector检测对象的使用的维奥拉 - 琼斯算法
运动分析和跟踪
vision.BlockMatcher估计图像或视频帧之间的运动
vision.ForegroundDetector检测采用高斯混合模型的前景
vision.HistogramBasedTracker基于直方图的对象跟踪
vision.OpticalFlow估计物体的速度
vision.TemplateMatcher图像中找到模板
分析与增强
vision.ContrastAdjuster调整图像的对比度,线性缩放
vision.Deinterlacer删除运动伪影的隔行扫描视频输入信号
vision.Histogram EqualizerEnhance对比度的图像,使用直方图均衡化
vision.MedianFilter二维中值滤波
转换
vision.Autothresholder转换强度图像二值图像
vision.ChromaResampler缩减像素采样或上采样图像的色度分量
vision.ColorSpaceConverter色彩空间之间转换颜色信息
vision.DemosaicInterpolator拜耳模式的图像转换为真彩色
vision.GammaCorrector应用或删除伽玛校正,图像或视频流
vision.ImageComplementer在二进制或强度图像的像素值的补
vision.ImageDataTypeConverter转换和缩放输入图像到指定的输出数据类型
过滤
integralKernel积分图像过滤器
vision.Convolver计算2-D离散卷积的两个输入矩阵
vision.ImageFilter执行2-D FIR滤波的输入矩阵
vision.MedianFilter二维中值滤波
几何变换
vision.GeometricRotator指定的角度旋转图像
vision.GeometricScaler放大或缩小图像尺寸
vision.GeometricShearer Shift键的行或列的图像线性变化的偏移
vision.GeometricTransformer应用投影或仿射变换的图像
vision.GeometricTransform EstimatorEstimate几何变换的匹配点对
vision.GeometricTranslator翻译在二维平面上的图像,使用位移矢量
形态学操作
vision.ConnectedComponentLabeler标签和计算连通区域的二值图像
vision.MorphologicalBottomHat底帽滤波图像
vision.MorphologicalClose图像进行形态闭
vision.MorphologicalDilate对图像进行形态学膨胀
vision.MorphologicalErode上的图像进行形态学腐蚀
vision.MorphologicalOpen图像进行形态开
vision.Morphological TopHatTop帽子图像过滤
统计
vision.Autocorrelator计算2-D输入自相关矩阵
vision.BlobAnalysis属性连通区域
vision.Crosscorrelator 2-D剖面的两个输入矩阵的相关性
vision.Histogram生成直方图的每个输入
matrixvision.LocalMaximaFinder查找本地最大矩阵
vision.Maximum查找输入或输入序列中的最大值
vision.Mean输入或输入序列的平均值
vision.Median查找中值在输入
vision.Minimum查找最低值在输入或输入序列
vision.PSNR计算峰值信号的信噪比(PSNR)的图像之间的
vision.StandardDeviation查找标准偏差的输入或输入序列
vision.Variance查找在输入或输入序列的变异值
文本和图形
vision.AlphaBlender将图像,叠加图像,或突出显示选定的像素
vision.MarkerInserter输出图像上绘制标记
vision.ShapeInserter绘制矩形,线,多边形或圆形图像上
vision.TextInserter绘制文本,图像或视频流
变换
vision.DCT计算2-D离散余弦变换
vision.FFT两维离散付里叶变换
vision.HoughLines查找rho沸石和θ对所描述的线的笛卡尔坐标
vision.HoughTransform查找图像中的线,通过Hough变换
vision.IDCT计算2-D的逆离散余弦变换
vision.IFFT二维离散傅立叶逆变换
vision.Pyramid执行高斯金字塔分解
定义新的系统对象
matlab.System系统对象的基类
getDiscreteStateImpl离散状态的属性值
getNumInputsImpl号码的输入参数传递步骤和设置方法
getNumOutputsImpl返回的输出两步法
isInactivePropertyImpl活动或不活动标志的属性
matlab.system.mixin.FiniteSource有限源mixin类
isDoneImplEnd的数据标志
processTunedPropertiesImpl时的动作调谐特性的变化
releaseImpl释放资源
resetImplReset系统对象的状态
setProperties设置属性值的名称 - 值对输入
setupImpl初始化系统对象
stepImpl系统输出和状态更新方程
matlab.system.StringSet一套有效的字符串值
validateInputsImpl验证输入步骤方法
validatePropertiesImpl验证属性值
实用工具
vision.ImagePadder垫或作物输入图像沿其行,列,或两者兼而有之
復原編輯
窗体底端
Video Display
vision.DeployableVideoPlayer Send video data to computer screen
vision.VideoPlayer Play video or display image sequences
Video File I/O
vision.BinaryFileReader Read video data from binary files
vis
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 摄像头 基本 操作 解读