2012-06-14 7 views
-3

У меня есть программа в C#, которая использует мою локальную веб-камеру для захвата и хранения изображений. У меня есть кнопки, чтобы нажимать на start, stop, continue n и т. Д. Когда я запускаю программу, она работает правильно в первый раз после включения моей системы, но в последовательных исполнениях одной и той же вещи я получаю сообщение об ошибке (в 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(); 
    } 

} 

}

+0

Прочтите [FAQ] и разместите соответствующий код и информацию. Или перезагрузите компьютер перед запуском программы. –

+2

Не делайте предположений об ошибках, отлаживайте их. Определите источник исключения, добавив точки останова и try..catch. – CodeCaster

+0

Я добавил код, где я получаю указанную ошибку. Попробуйте помочь мне в этом! Спасибо –

ответ

1

У вас есть NullReferenceException выброшены, не OutOfMemoryException.

Проверьте стек вызовов, чтобы определить, откуда он берется. Вы можете отлаживать свое приложение с помощью отладчика, установленного для прерывания генерируемого исключения, поэтому он будет ломаться прямо там, где происходит ваше исключение (нажмите CRTL + D, E, чтобы открыть окно исключений в VS.NET).

+0

Ошибка возникает при запуске веб-камеры по методу «webcam.start (0)». –

1

Из-за ошибки, которую вы получаете, я предполагаю, что вы загрузили библиотеку EasyWebCam.
Если это так, то вот как я работал над этим:
1. Я установил программное обеспечение Cyberlink Youcam на свою машину.
2. Всякий раз, когда я запускаю собственное приложение, библиотека EasyWebCam обнаруживает Youcam WebSplitter на машине и предлагает мне выбрать либо это, либо драйвер веб-камеры по умолчанию.
3. Я выбираю YouCam WebSplitter, и приложение прекрасно работает с ним.


На этом этапе появляется еще одна загвоздка: процесс Icam не заканчивается, когда приложение закрывается.
Как я его исправил?
Я должен был получить процесс Youcam и Kill(), когда мое окно приложения должно выйти.
Это уродливое решение сработало.

+0

Вы знаете любое другое легкое решение этой проблемы? –

+0

Библиотека EasyWebCam от Codeplex не является открытым исходным кодом, поэтому я не могу думать о другом способе, которым вы можете настроить способ инициализации захвата. Однако вы можете загрузить оригинальную библиотеку из [здесь] (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=1339&lngWId=10). Тонкая настройка этого исходного источника должна быть намного проще. – Chukwuemeka

Смежные вопросы