(来点有用的)MATLAB摄像头实时图像处理
by HPC_ZY
第一步:安装硬件支持包
- 打开附加功能项
- 查找如下摄像头支持包
第二步:获取摄像头信息
-
输入 imaqhwinfo,查看当前适配器
如图,我们的适配器名为 winvideo -
输入imaqhwinfo(‘winvideo’),查看该适配器下所有设备
由于没有接入USB摄像头,当前只有笔记本电脑自带的摄像头
-
通过DeviceInfo查看摄像头详细信息
其中 SupportedFormats是该摄像头支持的图像色彩与尺寸,我的设备如下:
-
上述代码
% 查看适配器
disp(imaqhwinfo)
% 查看设备及其支持的格式
info = imaqhwinfo('winvideo');
disp(info.DeviceInfo.SupportedFormats)
第三步:数据实时处理
有了前面的准备,就可以正式开始了。
- 连接摄像头获取数据
% 生成对象并同步画面
obj = videoinput('winvideo',1,'MJPG_640x480');
h = preview(obj);
运行代码会弹出以下界面,实时画面
- 导出图像数据
利用此函数 getsnapshot(obj) 即可导出图像,若想连续导出可通过以下方式
figure
while ishandle(h)
frame = getsnapshot(obj); % 获取帧
imshow(frame)
drawnow
end
注:
(1)帧率跟电脑配置有关,在当前尺寸下我只能达到10帧;
(2)通常直接使用MJPG格式,如果需要使用YUY2格式,在显示时用 ycbcr2rgb()将其改为RGB即可。
- 实时图像处理:简单边缘提取
只需在上述代码中稍作修改
figure
while ishandle(h)
frame = getsnapshot(obj); % 获取帧
% -----------此处可添加你需要的操作------------
imedge = edge(rgb2gray(frame),'log') % 计算log边缘
% -------------------------------------------
subplot(121),imshow(frame)
subplot(122),imshow(imedge)
drawnow
end
效果图如下(由于太懒没有制作动图,仅截图示意,大家可自行测试)
最后
在此基础上,就可以进行更多高级操作,如:目标检测、运动追踪、双目测距……
有任何问题欢迎讨论,最后还是把测试代码上传
https://download.csdn.net/download/xsz591541060/11152130
由于很简单,不推荐下载,除非你买了年VIP。