![人工智能实战进阶导引](https://wfqqreader-1252317822.image.myqcloud.com/cover/728/47216728/b_47216728.jpg)
1.4 开发界面设计
1.4.1 基本信息获取
首先确保摄像头已经连接且处于正常工作状态,可以利用MATLAB图像视频处理工具箱的imaqhinfo函数进行检测,通过检测确定安装了适配器winvideo,用此适配器的名称能够连接视频图像的采集设备,获取该采集设备的硬件信息,使用函数的命令格式如下:
![](https://epubservercos.yuewen.com/483F99/26581230301270906/epubprivate/OEBPS/Images/Figure-P17_13856.jpg?sign=1738929564-EGW9J5SFnL86977MosqQByEJHeGnVwKy-0-eb5477997b291b1f7509e77e64d76b2b)
运行结果如下:
![](https://epubservercos.yuewen.com/483F99/26581230301270906/epubprivate/OEBPS/Images/Figure-P17_13854.jpg?sign=1738929564-A7TsfNI85fW08f0QAHFmEYKfxMuactSi-0-97d5a650e92a10782638cbed28ce8ed9)
包含以下字段的struct:
![](https://epubservercos.yuewen.com/483F99/26581230301270906/epubprivate/OEBPS/Images/Figure-P17_13852.jpg?sign=1738929564-VPNRJpkYIpNNvsnbhJM6KyigNualbdlA-0-998339c9b170166069912b57b5a552d2)
若想获得更多关于硬件设备的信息,可使用以下命令:
![](https://epubservercos.yuewen.com/483F99/26581230301270906/epubprivate/OEBPS/Images/Figure-P18_13860.jpg?sign=1738929564-WDL3xFgjiiPr12iBtZsoDOGndhoN7JY1-0-454c71bae95cff52a2d3fdb49d0dcb54)
运行结果如下:
![](https://epubservercos.yuewen.com/483F99/26581230301270906/epubprivate/OEBPS/Images/Figure-P18_13862.jpg?sign=1738929564-kKsEXy2gJRB2lQQ4eavDr6Ozu3F6ipWf-0-54dcac733869c9615bd398dc1e8dff45)
包含以下字段的struct:
![](https://epubservercos.yuewen.com/483F99/26581230301270906/epubprivate/OEBPS/Images/Figure-P18_13864.jpg?sign=1738929564-7PmTJmZvyR8PxtEYNmAAzq0FITa34ZHg-0-7dee49fa5c19bff6a17bfefe7ee3bb34)
从上述结果中能获取适配器名称、设备ID和设定的视频格式。接下来用videoinput函数和preview函数就能够完成视频输入对象的创建及视频流的预览。这些信息在之后的代码里将会用到。
设计中会用到一些MATLAB有关视频图像采集的基本代码,首先是Videoreader函数,该函数用于读取视频文件对象,调用格式为:
![](https://epubservercos.yuewen.com/483F99/26581230301270906/epubprivate/OEBPS/Images/Figure-P18_13867.jpg?sign=1738929564-XRViSTgVFLXyTDHMFweN1PWyzfp6vnVS-0-2d0048cda046f8fd096026021ef48771)
其中,obj是结构体,包含如下内容。
(1)Name:所提取视频文件的名称。
(2)Path:提取视频所在的文件路径。
(3)Duration:视频的总时长(以秒计时)。
(4)FrameRate:视频的帧速或帧率。
(5)NumberOfFrames:视频的总帧数。
(6)Height:视频的高度。
(7)Width:视频的宽度。
(8)BitsPerPixel:视频帧每个像素所对应的数据长度。
(9)VideoFormat:视频的类型,如RGB24。
(10)Tag:视频对象的标识符,默认为空字符串。
(11)Type:视频对象的类名,默认为VideoReader。
在不同的操作系统中,Videoreader函数读取的视频文件类型不同,但是在所有系统中都可以读取avi类型的视频,所以后续采集与读取的视频类型均设定为avi(避免因为视频文件类型不同,而对读取的原视频进行视频类型转换)。
其他相关函数还有get(获取所读取视频文件的参数)及set(设置视频对象的参数,与get相对应)。这几个函数在之后的视频文件读取、视频信息获取、视频图像互相转换中会用到。