MATLAB机器视觉工具箱安装及摄像头调用

06-01 1197阅读

说明

        1.本文使用的MATLAB版本为R2018a。

        2.本文适用于无法直接获取MATLAB硬件支持包的需求者。

        3.本文安装离线安装包的方法或适用于其他支持包。

        4.本文使用摄像头为LRCP USB摄像头。

        5.本文提供的离线安装包支持到R2023a。

1.失败的安装过程

MATLAB机器视觉工具箱安装及摄像头调用

MATLAB机器视觉工具箱安装及摄像头调用

        Matlab使用摄像头需要上述4个硬件支持包,一般的,前两个包需要重新下载安装。

        方法一:

        23年之前是可以直接从matlab主页-附加功能-获取硬件支持包,选择相应的硬件安装包安装。现在至少我的是不行的。因为一些懂得都懂的原因,我的附件功能资源管理器显示如下:

MATLAB机器视觉工具箱安装及摄像头调用

       方法二:

        从官网找到相应的安装工具usbwebcams.mlpkginstall与osgenericvideointerface.mlpkginstall。

MATLAB机器视觉工具箱安装及摄像头调用

        点击“Get Support Package Now”,跳转到:      

MATLAB机器视觉工具箱安装及摄像头调用

        点击,跳转:

MATLAB机器视觉工具箱安装及摄像头调用

        点击“Get”。下载了一个mlpkginstall文件。再点击文件就出现附加资源管理器了。本人无法成功!

        还有一个mlpkginstall文件如下:

MATLAB机器视觉工具箱安装及摄像头调用

2.离线安装包安装教程

        由于前两种,本人均无法成功,因此,本文使用第三种方法:安装离线支持包。

        链接:https://pan.baidu.com/s/1fFNE6FdeQP9PtwRZ2CZbjQ?pwd=u692

        提取码:u692

        下载上述支持包,解压后文件夹如下:

MATLAB机器视觉工具箱安装及摄像头调用

        双击support…文件,输入电子邮箱与密码(没有的先注册)。

MATLAB机器视觉工具箱安装及摄像头调用

        

        选择需要安装的硬件版本,之后选“下一步”。

MATLAB机器视觉工具箱安装及摄像头调用

        选择相应的安装包,这里选择“Image Acquisition…OS Generic Video …”与“MATLAB Support Package for USB Webcams”,点击“下一步”。

MATLAB机器视觉工具箱安装及摄像头调用

        可以选择默认路径,但是我选择默认路径,后面操作没有用。

        后面把安装包复制到matlab安装路径下的“/bin/win64”文件夹中才安装成功,所以这里可以直接安装在matlab安装路径下的“/bin/win64”文件夹中。之后无脑下一步,接受协议即可。安装完毕后进行下一步。

        在matlab安装路径下的“/bin/win64”文件夹中搜索“support”,有博主说选择“SupportSoftwareInstaller.exe”,但是我这里选择这个是一片空白。这里我选择“install_supportsoftware.exe”。之后,直接安装即可。

MATLAB机器视觉工具箱安装及摄像头调用

        安装完成后,就可以在附加功能中查看了。(可能需要重启MATLAB,图标如开头4个图片)

 3.摄像头调用常用函数

1)webcamlist

        使用该语句可以返回电脑的摄像头设备列表。这里返回值如下:

ans =

  2×1 cell 数组

    {'Integrated Camera'}

    {'LRCP  HD60fps'    }

        其中一般的,'Integrated Camera'表示电脑自带摄像头,'LRCP  HD60fps'表示这里的电脑外接摄像头,其他摄像头是其他名字。

        如果使用了GUIDE新建了一个弹出式菜单,可以通过下面语句将所有的摄像头设备读取到弹出式菜单进行选择。

set(handles.菜单tag, 'String',webcamlist);

2)webcam,videoinput与set

        video1 = webcam(CamName);

        一般的,使用上面语句可以获取视频对象,其中CamName表示摄像头编号或摄像头名。

        preview(video1);

        使用preview可以弹出窗口,显示获取的视频。最后使用clear可以清除对象。

        video_obj = videoinput(adaptorname,deviceID,format);

        video1 = videoinput('winvideo', CamAddr,'MJPG_1280x720');

        其中adaptorname:适配器名称(必填,一般均为’winvideo’);deviceID:设备ID号或名称(必填);format:视频采集格式(不填写则使用默认)。

        set(VideoObj,'ReturnedColorSpace','grayscale');

        设置视频对象返回的颜色(如果是彩色摄像头),'grayscale'表示灰度,可以直接返回灰度视频,'rgb'表示彩色(red\green\blue),还可以是其他颜色。

3)getsnapshot更新慢的问题与imshow

        Pic = getsnapshot(VideoObj);

        imshow(Pic);

        getsnapshot可以抓取视频对象的一帧,imshow显示图片。

        单独使用getsnapshot(VideoObj)会消耗很多时间,这里有两种解决方法:

        1.在使用getsnapshot(VideoObj)之前使用preview(VideoObj)将图片先显示,但是这会占用一个窗口;

        2.在使用getsnapshot(VideoObj)之前使用如下代码:

triggerconfig(VideoObj,'manual');
start(VideoObj);

        但是这样,必须在关闭后,调用delete(imaqfind)。

4.摄像头调用测试

        测试代码如下:

delete(imaqfind);       %关闭视频对象
CamName='LRCP  HD60fps';%摄像头名称
% 获取图像硬件信息
info = imaqhwinfo;
% 检查 InstalledAdaptors (适配器)是否为空
if isempty(info.InstalledAdaptors)
    % 构造提示消息
    msg = sprintf(['检测到未安装图像硬件支持包\n', ...
        '请安装相应硬件支持包']);
    return;
end
ImageAdaptor=string(info.InstalledAdaptors);%将数组转化为字符串
try
    VideoObj=videoinput(ImageAdaptor,...%适配器名称
        CamName,...         %摄像头名称或编号
        'MJPG_1280x720');   %新建视频对象
catch ME
    % 检查错误类型
    switch ME.identifier
        case 'imaq:videoinput:invalidID'
            msgbox(sprintf(['未检测到摄像头\n'...
                '请连接摄像头并重试\n']),...
                '错误', 'error');
        otherwise
            ME.identifier
            % 处理其他类型的错误
            msgbox('发生了未知错误,请联系开发人员。',...
                '错误', 'error');
    end
    return;
end
% 创建一个图形窗口
hFig = figure('Name', '摄像头预览',...
    'NumberTitle', 'off');
% 在图形中创建坐标轴
hAx = axes('Parent', hFig);
set(VideoObj,'ReturnedColorSpace','rgb');    %返回图片颜色
videoRes = get(VideoObj, 'VideoResolution');
nBands = get(VideoObj, 'NumberOfBands');
hImage = image(zeros(videoRes(2), videoRes(1), nBands),...
                'parent',hAx);
preview(VideoObj,hImage);

        上述代码首先检测了是否安装了硬件支持包,如为安装则会弹出提示框并退出; 通过try-catch检测摄像头是否连接。最后,使用figure创建了一个窗口,使用axes函数在窗口中创建了一个坐标图,使用image与preview函数将摄像头获取的图像传到指定图上。

MATLAB机器视觉工具箱安装及摄像头调用

        如果是GUIDE中的axes可以直接将hAx改为handles.axes1(axes的tag)。

参考文档:

1.解决MATLAB硬件支持包无法下载的问题_matlab stm硬件支持包-CSDN博客

2.Matlab上位机开发(四)Matlab获取自带摄像头或者USB摄像头数据-腾讯云开发者社区-腾讯云

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码