C # Emgucv отключить веб-камеру - PullRequest
0 голосов
/ 01 июня 2018

в настоящее время моя программа может открывать веб-камеру, а затем динамически захватывать человеческое лицо, однако я не знаю, как остановить камеру, потому что она будет захватывать лицо даже при закрытых окнах.

private static VideoCapture _cameraCapture;

public VideoSurveilance()
    {
        InitializeComponent();
        Run();

    }


    void Run()
    {

        try
        {
            _cameraCapture = new VideoCapture();


        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message);
            return;
        }

        _fgDetector = new 
        Emgu.CV.VideoSurveillance.BackgroundSubtractorMOG2();
        _blobDetector = new CvBlobDetector();
        _tracker = new CvTracks();

        Application.Idle += ProcessFrame;
    }

    private void btnStopCamera_Click(object sender, EventArgs e)
    {

        _cameraCapture.Pause();//not working
        _cameraCapture.Stop();//not working
        _cameraCapture.Dispose();//worked but crashed due to memory issue

        this.Close();

        faceManipulate fm = new faceManipulate();
        fm.Show();

Проблема с памятью уже решена.Тем не менее, удаление приведет к тому, что фрейм процесса Null Reference Object.

1 Ответ

0 голосов
/ 01 июня 2018

Вы уже решили проблему, вы должны вызвать метод Dispose.

CameraCapture реализует DisposableObject, вы не должны иметь его как статическую переменную, вместо этого вы должны сохранить его как переменную и утилизировать, когда вы закончитес ним.

Я видел, что вы сказали, что он "работал, но потерпел крах из-за проблемы с памятью", если это все еще проблема, оставьте вопрос или комментарий ниже, описывающий проблему с памятью.

...