![人工智能实战进阶导引](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=1738880357-bygxpr7yrdTJKJFCGBh7puBydJ0j7ygx-0-7e5083e80cb49d68cb6b94338023e7fb)
运行结果如下:
![](https://epubservercos.yuewen.com/483F99/26581230301270906/epubprivate/OEBPS/Images/Figure-P17_13854.jpg?sign=1738880357-jhHg8fDqPrDStyWhOatiuCkiqISIPlGf-0-4b85743efa509b19ce1bc2cbcc148c70)
包含以下字段的struct:
![](https://epubservercos.yuewen.com/483F99/26581230301270906/epubprivate/OEBPS/Images/Figure-P17_13852.jpg?sign=1738880357-sIbZacNqo9p4xHXky5pEBTaEpJZR0pQb-0-52daeb28cdee80bdfff46f6ebf094991)
若想获得更多关于硬件设备的信息,可使用以下命令:
![](https://epubservercos.yuewen.com/483F99/26581230301270906/epubprivate/OEBPS/Images/Figure-P18_13860.jpg?sign=1738880357-oEIvJ7IZlkuDJpbQFG3QlAKhappDflCj-0-bcf3f74d1950b1a3b70b454c7672b4a0)
运行结果如下:
![](https://epubservercos.yuewen.com/483F99/26581230301270906/epubprivate/OEBPS/Images/Figure-P18_13862.jpg?sign=1738880357-SzMxi4SPjgJWJ6kBi1MV35DoPWN0jdlH-0-933d6ad9749d8c54f5e836699f119352)
包含以下字段的struct:
![](https://epubservercos.yuewen.com/483F99/26581230301270906/epubprivate/OEBPS/Images/Figure-P18_13864.jpg?sign=1738880357-DayJQcjAWGWulL58gwCIx8hR202OfPwU-0-2dc68abf2e74f8c7009b2d82c7c44f7b)
从上述结果中能获取适配器名称、设备ID和设定的视频格式。接下来用videoinput函数和preview函数就能够完成视频输入对象的创建及视频流的预览。这些信息在之后的代码里将会用到。
设计中会用到一些MATLAB有关视频图像采集的基本代码,首先是Videoreader函数,该函数用于读取视频文件对象,调用格式为:
![](https://epubservercos.yuewen.com/483F99/26581230301270906/epubprivate/OEBPS/Images/Figure-P18_13867.jpg?sign=1738880357-S6XqFWMQ5FP5tFQvQSVy8bb5eewcPixn-0-5bbfdbc5401812135794c00947aa318f)
其中,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相对应)。这几个函数在之后的视频文件读取、视频信息获取、视频图像互相转换中会用到。