(来点有用的)MATLAB摄像头实时图像处理


by HPC_ZY


第一步:安装硬件支持包

  1. 打开附加功能项
    在这里插入图片描述
  2. 查找如下摄像头支持包在这里插入图片描述

第二步:获取摄像头信息

  1. 输入 imaqhwinfo,查看当前适配器
    在这里插入图片描述
    如图,我们的适配器名为 winvideo

  2. 输入imaqhwinfo(‘winvideo’),查看该适配器下所有设备

在这里插入图片描述
由于没有接入USB摄像头,当前只有笔记本电脑自带的摄像头

  1. 通过DeviceInfo查看摄像头详细信息
    在这里插入图片描述
    其中 SupportedFormats是该摄像头支持的图像色彩与尺寸,我的设备如下:
    在这里插入图片描述

  2. 上述代码

% 查看适配器
disp(imaqhwinfo)
% 查看设备及其支持的格式
info = imaqhwinfo('winvideo');
disp(info.DeviceInfo.SupportedFormats)

第三步:数据实时处理

有了前面的准备,就可以正式开始了。

  1. 连接摄像头获取数据
% 生成对象并同步画面
obj = videoinput('winvideo',1,'MJPG_640x480);
h = preview(obj);

运行代码会弹出以下界面,实时画面在这里插入图片描述

  1. 导出图像数据
    利用此函数 getsnapshot(obj) 即可导出图像,若想连续导出可通过以下方式
figure
while ishandle(h)
    frame = getsnapshot(obj);  % 获取帧
    imshow(frame)
    drawnow
end

注:
(1)帧率跟电脑配置有关,在当前尺寸下我只能达到10帧;
(2)通常直接使用MJPG格式,如果需要使用YUY2格式,在显示时用 ycbcr2rgb()将其改为RGB即可。

  1. 实时图像处理:简单边缘提取
    只需在上述代码中稍作修改
figure
while ishandle(h)
    frame = getsnapshot(obj);  % 获取帧
    % -----------此处可添加你需要的操作------------
    imedge = edge(rgb2gray(imedge),'log') % 计算log边缘
    % -------------------------------------------
    subplot(121),imshow(frame)
    subplot(122),imshow(imedge)
    drawnow
end

效果图如下(由于太懒没有制作动图,仅截图示意,大家可自行测试)
在这里插入图片描述

最后

在此基础上,就可以进行更多高级操作,如:目标检测、运动追踪、双目测距……

有任何问题欢迎讨论,最后还是把测试代码上传
https://download.csdn.net/download/xsz591541060/11152130
由于很简单,不推荐下载,除非你买了年VIP。

猜你喜欢

转载自blog.csdn.net/xsz591541060/article/details/89676780