-3

我在 c# 中有一个程序,它使用我的本地网络摄像头来捕获和存储图像。我有按钮可以点击开始、停止、继续等。当我运行程序时,它在我打开系统后第一次正常工作,但在同一件事的连续执行中我得到一个错误(在 pop-上窗口):

捕获视频图像时发生错误。现在将终止视频捕获。对象引用未设置为对象的实例。

我认为这可能是因为相机设备,没有释放它使用的内存。那么,当我单击退出按钮时,如何以编程方式释放它?下面是程序的一部分,我在 webcam.start(0) 方法中遇到错误

命名空间 WinFormCharpWebCam {

class WebCam
{

    private WebCamCapture webcam;
    private System.Windows.Forms.PictureBox _FrameImage;
    private int FrameNumber = 30;
    public void InitializeWebCam(ref System.Windows.Forms.PictureBox ImageControl)
    {
        webcam = new WebCamCapture();
        webcam.FrameNumber = ((ulong)(0ul));
        webcam.TimeToCapture_milliseconds = FrameNumber;
        webcam.ImageCaptured += new WebCamCapture.WebCamEventHandler(webcam_ImageCaptured);
        _FrameImage = ImageControl;
    }

    void webcam_ImageCaptured(object source, WebcamEventArgs e)
    {
        _FrameImage.Image = e.WebCamImage;
    }

    public void Start()
    {
        webcam.TimeToCapture_milliseconds = FrameNumber;
        webcam.Start(0); //error pops up when the execution comes to this method

    }

    public void Stop()
    {
        webcam.Stop();

    }

    public void Continue()
    {
        // change the capture time frame
        webcam.TimeToCapture_milliseconds = FrameNumber;

        // resume the video capture from the stop
        webcam.Start(this.webcam.FrameNumber);
    }

    public void ResolutionSetting()
    {
        webcam.Config();
    }

    public void AdvanceSetting()
    {
        webcam.Config2();
    }

}

}

4

2 回答 2

1

You have a NullReferenceException thrown, not OutOfMemoryException.

Check your call stack to pinpoint where it originates. You can debug your app with debugger set to break on exception thrown, so it will break right where your exception occurs (press CRTL+D, E to open exceptions window in VS.NET).

于 2012-06-14T09:50:21.463 回答
1

根据您收到的错误,我猜您下载了 EasyWebCam 库。
如果这是正确的,那么我就是这样解决它的:
1. 我在我的机器上安装了 Cyber​​link 的 Youcam 软件。
2. 每当我启动我自己的应用程序时,EasyWebCam 库都会检测到机器上的 Youcam WebSplitter,并提示我选择那个或默认的网络摄像头驱动程序。
3. 我选择了 YouCam WebSplitter,该应用程序可以正常工作。


此时,出现了另一个问题:当我的应用程序关闭时,Youcam 进程并没有终止。
我是怎么修的?
当我的应用程序窗口即将退出时,我必须获取 Youcam 进程并 Kill() 它。
这个丑陋的解决方案奏效了。

于 2012-06-14T09:52:51.700 回答