为了账号安全,请及时绑定邮箱和手机立即绑定

C# Emgucv 关闭网络摄像头

C# Emgucv 关闭网络摄像头

C#
侃侃无极 2021-07-03 14:00:32
目前我的程序可以打开网络摄像头然后动态捕捉人脸,但是,我不知道如何停止相机,因为即使关闭窗户它也会继续捕捉人脸。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();内存问题已经解决了。但是,Dispose 会导致流程框架 Null Reference Object。void ProcessFrame(object sender, EventArgs e)    {        Mat frame = _cameraCapture.QueryFrame();        Mat smoothedFrame = new Mat();        CvInvoke.GaussianBlur(frame, smoothedFrame, new Size(3, 3), 1); }
查看完整描述

1 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

你已经解决了这个问题,你应该调用 Dispose 方法。

CameraCapture 实现了 DisposableObject,您不应将其作为静态变量使用,而应将其保留为变量并在完成后处理。

我看到你说它“工作但由于内存问题而崩溃”,如果这仍然是一个问题,请在下面发布一个描述内存问题的问题或评论。


查看完整回答
反对 回复 2021-07-18
  • 1 回答
  • 0 关注
  • 306 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信