void InitializeMotionDetection(int cameraindex) { Thread thread = new Thread(() => { try { ReleasePreviousDetectors(); WebcamManager.SetPropertyValueManual(cameraindex, WebcamManager.CAMERA_PROPERTY.CAMERA_FOCUS, camerafocus); WebcamManager.SetPropertyValueManual(cameraindex, WebcamManager.CAMERA_PROPERTY.CAMERA_ZOOM, camerazoom); motionDetector = new WebCamMotionDetector(); motionDetector.ToggleVisualization(); motionDetector.RegisterForImages(WebcamManager.GetCamera(cameraindex)); motionDetector.SelectedCameraIndex = cameraindex; motionDetector.MotionAreaPercentageSensitivity = percentageSensitivity; motionDetector.TimeSensitivity = timeThreshold; motionDetector.RoiX = roiX; motionDetector.RoiY = roiY; motionDetector.RoiWidth = roiWidth; motionDetector.RoiHeight = roiHeight; motionDetector.MotionDiffSensitivity = differenceThreshold; motionDetector.MotionDetected += WebCamMotionDetected; } catch (Exception err) { MessageBox.Show(err.ToString()); } }); thread.SetApartmentState(ApartmentState.STA); thread.Start(); }
protected void ReleasePreviousDetectors() { if (motionDetector != null && selectedCameraIndex != -1) { for (int i = 0; i < motionDetector.SubscribedImagers.Count; i++) { motionDetector.UnregisterForImages(motionDetector.SubscribedImagers[i]); } motionDetector.Clear(); motionDetector = null; } }