使用EMGU.CV检查网络摄像头是否可用/不可用

时间:2017-03-31 01:22:13

标签: vb.net webcam-capture emgucv

我正在使用EMGU.CV在VB.NET中使用多个网络摄像头,专门用于录制视频实时。

问题是,当相机被拔出或突然发生故障时,我需要包含图像捕捉的PictureBox才能显示任何内容。

我正在使用此代码:

    Try
                '===================== CAM 1
                imagez0 = Capturez0.RetrieveBgrFrame
                PictureBox1.BackgroundImage = imagez0.ToBitmap()
                Videoz.WriteFrame(imagez0)
                drawbitmap1 = New Bitmap(PictureBox1.Width, PictureBox1.Height)
                graph = Graphics.FromImage(drawbitmap1)
                graph.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
                graph.DrawString(x + " | CAM 1 | Faculty", Label1.Font, brush, PictureBox1.Location)
                PictureBox1.Image = drawbitmap1
            Catch ex As Exception
                Capturez0.Stop()
                imagez0 = Nothing
                Videoz.WriteFrame(imagez0)
                PictureBox1.Image = Nothing
                PictureBox1.BackgroundImage = Nothing
                Videoz = Nothing
End Try

但是当我尝试拔下网络摄像头时,它只会挂在它捕获的最后一张图像上,然后什么都不做,只是挂在那张图片上。我认为代码没有落到Catch exception,这就是图像仍然可用的原因。

然后,当我尝试将相机放回原位时,它将无法恢复录制。它只是卡住了。

1 个答案:

答案 0 :(得分:0)

如果您想检测意外的USB拔出,那么您可以使用Timer control检查输入设备列表,如下面的link所述

您也可以参考此link。它描述了使用Web Cam所需的所有功能。

其他有用的链接