void InitializeFaceDetection(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); faceDetector = new WebCamFaceDetector(); faceDetector.ToggleVisualization(); faceDetector.RegisterForImages(WebcamManager.GetCamera(cameraindex)); faceDetector.SelectedCameraIndex = cameraindex; faceDetector.RoiX = roiX; faceDetector.RoiY = roiY; faceDetector.RoiWidth = roiWidth; faceDetector.RoiHeight = roiHeight; faceDetector.FaceDetected += WebCamFaceDetected; } catch (Exception err) { MessageBox.Show(err.ToString()); } }); thread.SetApartmentState(ApartmentState.STA); thread.Start(); }
protected void ReleasePreviousDetectors() { if (faceDetector != null && selectedCameraIndex != -1) { for (int i = 0; i < faceDetector.SubscribedImagers.Count; i++) { faceDetector.UnregisterForImages(faceDetector.SubscribedImagers[i]); } faceDetector.Clear(); faceDetector = null; } }