1

Emgu CV を使用して C# Web カメラ アプリケーションを作成しています。pictureBox でのフレーム キャプチャ中にユーザーが Web カメラを抜いた場合の処理​​を試みました。
Web カメラが取り外されている場合、アプリケーションは、pictureBox が再び更新されるまで、2 秒ごとに新しい Web カメラ接続のスキャンを開始する必要があります。
次のタイマー コードは何もキャッチできませんでした。プログラムは最初にフレームをキャプチャし、カメラのプラグを抜いてからプラグを差し直しましたが、カメラを再起動できませんでした。

private void timer1_Tick(object sender, EventArgs e)
    {

        if (cap == null)
        {
            try
            {
                cap = new Capture(0);
                cap.SetCaptureProperty(CAP_PROP.CV_CAP_PROP_FRAME_WIDTH, 320);
                cap.SetCaptureProperty(CAP_PROP.CV_CAP_PROP_FRAME_HEIGHT, 240);

                Console.WriteLine("Restarting Cam");
            }
            catch (Exception ee){ 
                Console.WriteLine("null"); cap = null;  return; 
            }
        }
        else
        {
            Console.WriteLine("NO null");
        }

        try
        {
            Image<Bgr, byte> nextFrame = cap.QueryFrame();
        }
        catch(Exception ee)
        {
            Console.WriteLine("Frame Capture fail");
            cap.Dispose();
            cap = null;
            return;
        }
        using (Image<Bgr, byte> nextFrame = cap.QueryFrame())
        {
            if (nextFrame != null)
            {
                Image<Gray, byte> grayframe = nextFrame.Convert<Gray, byte>();
                videoBox.Image = nextFrame.ToBitmap();
            }
        }
    }

プログラムは、カメラのプラグを抜いてから 20 秒後に "No null" を出力し続け、出力コンソールに "The thread '' (0xb96c) has exited with code 0 (0x0)" が出力されました。

4

1 に答える 1