private void AddWebcameras() { try { List <string> monikers = new List <string>(); var loaclWebCamsCollection = new FilterInfoCollection(FilterCategory.VideoInputDevice); foreach (Accord.Video.DirectShow.FilterInfo localcamera in loaclWebCamsCollection) { monikers.Add(localcamera.MonikerString); bool added = false; foreach (ICameraDevice device in ConnectedDevices) { WebCameraDevice webCamera = device as WebCameraDevice; if (webCamera != null) { if (webCamera.PortName == localcamera.MonikerString) { added = true; } } } if (added) { continue; } WebCameraDevice camera = new WebCameraDevice(); camera.Init(localcamera.MonikerString); camera.DeviceName = localcamera.Name; camera.SerialNumber = localcamera.MonikerString; ConnectedDevices.Add(camera); SelectedCameraDevice = camera; camera.PhotoCaptured += cameraDevice_PhotoCaptured; camera.CameraDisconnected += cameraDevice_CameraDisconnected; CameraConnected?.Invoke(camera); } //List<WebCameraDevice> devicesToDisconnect = ConnectedDevices.OfType<WebCameraDevice>() // .Where(webCamera => !monikers.Contains(webCamera.PortName)) // .ToList(); //foreach (var webCamera in devicesToDisconnect) //{ // cameraDevice_CameraDisconnected(webCamera, new DisconnectCameraEventArgs() { }); //} } catch (Exception ex) { Log.Error("Unable to connect to a webcamera", ex); } }
private void OnCameraConnected() { CameraConnected?.Invoke(this, EventArgs.Empty); }
void RaiseCameraConnectedEvent(bool connected) { CameraConnected?.Invoke(connected); }