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