视频采集: 捕捉图像与 AVI 视频

这个VB.NET示例程序演示的是如何使用 IC Imaging Control 同时捕捉 AVI 文件和 JPEG 图像。
语言:.NET C#/Visual Basic
版本:3.0.3
发布于:1965年4月9日
作者:IC Imaging Control 技术支持部
系统要求:IC Imaging Control >2.1
由WDM数据流类驱动程序驱动的相机、视频转换器或图像采集卡

Screenshot of this sample.

这个程序将用到一个专门将图像存为JPEG文件的帧滤镜,该帧滤镜被包含在这个示例程序的安装文件中。 示例程序将实现下列操作:

  • 使用IC Imaging Control内置对话框开启设置一台视频捕捉设备。
  • 在程序开始时保存当前视频设备,加载最近一次使用的视频设备。
  • 将实时影像的尺寸设为 IC Imaging Control 的窗体大小。
  • 在一个组合框中列出所有编码。
  • 如编码提供属性对话框,显示其属性对话框。
  • 暂停和继续捕捉 AVI 文件。
  • 在录制 AVI 文件时抓取并保存图像。

上面列出的大部分工作都在其它示例程序中有详细的解释,所以这里只介绍如何使用 "Save Image" 帧滤镜。 首先,在窗体的开始声明一个 TIS.Imaging.FrameFilter 类型的变量, 将其命名为 SnapImageFilter,这个变量将被用于访问帧滤镜。

[VB.NET]
Dim SnapImageFilter As TIS.Imaging.FrameFilter

程序在 Form1_load sub 中调用"Save Image"帧滤镜。在尝试调用滤镜后, 判断 SnapImageFilter 的内容是否为 Nothing。如 SnapImageFilterNothing,说明滤镜未被加载,原因可能是 滤镜文件 SaveImageFrameFilter.FTF 不在应用程序的目录里、或不在 IC Imaging Control 的 OCX 路径上。IC Imaging Control 的 OCX 路径通常是目录 Common Files\ICImagingControl3。 从本页上方链接出下载的示例安装程序将会把这个滤镜文件安装在正确的文件夹中。

SnapImageFilter 被成功加载,它将被插入 IC Imaging Control 的设备路径中。

[VB.NET]
SnapImageFilter = IcImagingControl1.FrameFilterCreate("Save Image", "")
If SnapImageFilter Is Nothing Then
    MessageBox.Show("Failed to load the Snap Image filter", "Filter Loading", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Else
    IcImagingControl1.DeviceFrameFilters.Add(SnapImageFilter)
End If

程序窗体中应有一个按钮用于保存图像,所以程序中也应有相应的按钮处理程序。 在保存图像之前,在按钮处理程序btnSnapImage_Click中需要检查:

  • 是否已加载一个有效视频捕捉设备?
  • 是否正在播放现场视频?
  • SnapImageFilter 是否为 Nothing

SnapImageFilter 的参数 "ImageName" 必须被设为一个有效的文件名, 这样 SnapImageFilter 才能保存图像。由于这个参数在程序线程和 IC Imaging Control 视频现成之间相互传递,它必须被置于 BeginParameterTransferEndParameterTransfer 的调用中。在设置好参数 "ImageName" 后, SnapImageFilter 将捕捉下一帧传回的图像。

[VB.NET]
Private Sub btnSnapImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSnapImage.Click
    With IcImagingControl1
        If .DeviceValid = True Then
            If .LiveVideoRunning = True Then
                If Not SnapImageFilter Is Nothing Then
                    ImageCounter = ImageCounter + 1
                    Dim ImageFileName As String
                    ImageFileName = String.Format("Image{0}.jpg", ImageCounter)
                    SnapImageFilter.BeginParameterTransfer()
                    ' Passing the image name to the SnapImageFilter will snap the image
                    SnapImageFilter.SetStringParameter("ImageName", ImageFileName)
                    SnapImageFilter.EndParameterTransfer()
                End If
            End If
        End If
    End With
End Sub

相关源代码示例

责任声明
IC Imaging Control 源代码库中的所有代码均只用于教学目的,The Imaging Source Europe GmbH 作为IC Imaging Control的开发制造商,不对任何由于使用本文或其中源代码所产生的后果承担责任。

该网站为The Imaging Source网络的一部分。其它的站点包括 公司, Imaging, 天文相机, Astronomy Cameras Blog, Blog caméras d'astronomie, 天文相机有奖竞答, TX Text Control, LiveDocx, phpLiveDocxForum.