Вместо использования класса WebCam, почему бы просто не использовать класс WebCamCapture
напрямую (поскольку вы не отображаете его в форме) и напрямую обрабатывать событие ImageCapture
. Аргумент события для события содержит Image
. Вы можете в обработчике событий сохранить изображение на диск. С другой стороны, если вы хотите использовать образец и класс WebCam
, и у вас есть форма. Используйте PictureBox, но оставьте его скрытым (установите для Visible значение false), а затем просто скопируйте изображение оттуда и сохраните на диск, когда вам нужно.
Вот пример кода использования класса WebCamCapture вместо класса WebCam. Следует отметить, что этот код основан на примере кода по ссылке, приведенной в вопросе. Я сохранил стиль примера, чтобы код выровнялся.
Редактировать: Добавление примера использования WebCamCapture вместо класса WebCam. Этот код должен использоваться для изменения Form1.cs
в примере кода.
// Instead of having WebCam as member variable, have WemCamCapture
WebCamCapture webCam;
// Change the mainWinForm_Load function
private void mainWinForm_Load(object sender, EventArgs e)
{
webCam = new WebCamCapture();
webCam.FrameNumber = ((ulong)(0ul));
webCam.TimeToCapture_milliseconds = 30;
webCam.ImageCaptured += webcam_ImageCaptured;
}
// Add the webcam Image Captured handler to the main form
private void webcam_ImageCaptured(object source, WebcamEventArgs e)
{
Image imageCaptured = e.WebCamImage;
// You can now stop the camera if you only want 1 image
// webCam.Stop();
// Add code here to save image to disk
}
// Adjust the code in bntStart_Click
// (yes I know there is a type there, but to make code lineup I am not fixing it)
private void bntStart_Click(object sender, Event Args e)
{
webCam.Start(0);
}