(2)图片框控件(Picture)可以用来显示图形,也可以用来在控件上输出图形和用Print方法输出文本,还可以把图片框控件作为容器,将不同功能的控件包容在其中从而实现分组效果。本系统中主要利用图片框控件来显示摄像头说采集到的视频信息。
(3)定时控件(Timer)通过引发Timer事件,从而有规律地每隔一段时间就执行一次事件内的代码。Timer控件在运行时不可见,在设计时不能够调节其大小。其主要属性和事件的常规语法如下:
Interval属性返回或设置Timer控件的各计时事件调用的毫秒数,可以在设计时或运行时设置该属性。如果Timer控件的Enable属性为True,则从Interval属性的设置值开始倒计时。
Timer事件在一个Timer控件预定的时间间隔过去之后发生。该间隔的频率存储于该控件的Interval属性中。应用Timer事件,可以按照指定时间间隔重复某一操作。
变更图像格式
若摄像头说采集到的图像画面不合适,可以用下面的语句: Set_VideoFormat=SendMessage_Long(CapHWnd,WM_CAP_DLG_VIDEOFORMAT, 0&, 0&)调出如图4.3所示的对话框,通过更改其设置来改变图像的大小。在图4.3所示的对话框中可以进行下列设置:
21
图4.3 图像格式设置图
①分辨率:就是画面的宽度和高度,分辨率会因摄像头的不同,而有所不同。
②模式:就是图像画面的色彩模式
③大小:当改变上述其中一个值时,程序会自动计算文件所占的硬盘空间,并且显示出来分辨率越大或颜色数越多,则越占空间。
变更压缩比
为了根据存储空间来设定视频文件的存储大小,因此我们可以通过下面的语句:
Set_CompressRate=SendMessage_Long(CapHWnd,WM_CAP_DLG_VIDEOCOMPRESSION, 0&, 0&),来调用如图所示的窗口来变更压缩比。使我们采集到的视频文件在不影响质量的情况下达到最小。通过如图4-4所示的这个窗口我们不但可以选择合适的压缩比而且还可以对其进行局部的设置使存储的视频文件达到最佳效果
22
图4.4 压缩比设置图
变更抽取来源
由于本套视频监控采用了四部摄像头,因此可以利用下面的语句来进行摄像头的选择:
SendMessage_long (CapHwnd, WM_CAP_DLG_VIDEOSOURCE, 0&, 0&),它会出现如图4.5所示的对话框,在这个对话框中我们不但可以进行摄像头的选择,而其还可以对每个摄像头的亮度、曝光度和颜色等进行设置。
23
图4.5 摄像头设置图
4.4 图像的显示
激活摄像头:
①利用capCreateCaptureWindows函数,建立一个摄像头窗口,语法如下所示:CapHWnd=capCreateCaptureWindows(窗口名称,WS_CHILD or WS_VISIBLE,水平坐标,垂直坐标,宽度,高度screen.ActiveForm.hwnd,0 )
②利用SendMessage_Long函数,将抽取装置连接到摄像头窗口,语法如下所示:SendMessage_Long(CapHwnd,WM_CAP_DRIVER_CONNECT,装置代号,0&)
③利用SendMessage_Any函数,返回该摄像头窗口,语法如下所示:
24
SendMessage_Any(CapHwnd,WM_CAP_DRIVER_Get_CAPS,Len(Caps),Caps)
④利用SendMessage_Long函数,设置预览的速度,语法如下所示: SendMessage_Long(CapHwnd,WM_CAP_SET_PREVIEWRATE,速度,0&)
⑤利用SendMessage_Long函数,激活摄像头窗口,语法如下所示: SendMessage_Long(CapHwnd,WM_CAP_SET_PREVIE,Ture,0&)
视频录制
对于视频图像的采集我采用了如下的两个函数来进行:Sendmessage_Any(CapHwnd,WM_CAP_SET_SEQUENCE_SETUP,LEN(p), p) Sendmessage_Long (CapHwnd, WM_CAP_ SEQUENCE,0&,0&) 具体的程序片段如下:
Dim p As CAPTUREPARMS With p
.wPercentDropForError = 10 .fUsingDOSMemory = 0 .wNumVideoRequested = 32 .fAbortLeftMouse = 0 .fAbortRightMouse = 0 .wChunkGranularity = 0 .dwAudioBufferSize = 0 .fDisableWriteCache = 1 .fMCIControl = 0 .fStepCaptureAt2x = 0 .fYield = 0
.wNumAudioRequested = 4 .AVStreamMaster = 0&
25