public CamService(MainWindow mainWindow, string parentGridName, CamServiceWorkingMode mode = CamServiceWorkingMode.Work) { this.mode = mode; this.mainWindow = mainWindow; this.parentGridName = parentGridName; logger = MainWindow.ServiceContainer.Resolve <Logger>(); drawService = MainWindow.ServiceContainer.Resolve <DrawService>(); configService = MainWindow.ServiceContainer.Resolve <ConfigService>(); measureService = new MeasureService(this); var camIndex = -1; switch (parentGridName) { case "Cam1Grid": camNumber = 1; setupPoint = new PointF(configService.Read <float>(SettingsType.Cam1X), configService.Read <float>(SettingsType.Cam1Y)); camIndex = GetCamIndex(SettingsType.Cam1Id); break; case "Cam2Grid": camNumber = 2; setupPoint = new PointF(configService.Read <float>(SettingsType.Cam2X), configService.Read <float>(SettingsType.Cam2Y)); camIndex = GetCamIndex(SettingsType.Cam2Id); break; case "Cam3Grid": camNumber = 3; setupPoint = new PointF(configService.Read <float>(SettingsType.Cam3X), configService.Read <float>(SettingsType.Cam3Y)); camIndex = GetCamIndex(SettingsType.Cam3Id); break; case "Cam4Grid": camNumber = 4; setupPoint = new PointF(configService.Read <float>(SettingsType.Cam4X), configService.Read <float>(SettingsType.Cam4Y)); camIndex = GetCamIndex(SettingsType.Cam4Id); break; } resolutionWidth = configService.Read <int>(SettingsType.ResolutionWidth); resolutionHeight = configService.Read <int>(SettingsType.ResolutionHeight); movesExtraction = configService.Read <int>(SettingsType.MovesExtraction); movesDart = configService.Read <int>(SettingsType.MovesDart); movesNoise = configService.Read <int>(SettingsType.MovesNoise); smoothGauss = configService.Read <int>(SettingsType.SmoothGauss); toBullAngle = MeasureService.FindAngle(setupPoint, DrawService.projectionCenterPoint); videoCapture = new VideoCapture(camIndex, VideoCapture.API.DShow); videoCapture.SetCaptureProperty(CapProp.FrameWidth, resolutionWidth); videoCapture.SetCaptureProperty(CapProp.FrameHeight, resolutionHeight); GetSlidersData(); RefreshImageBoxes(); }
public void PrepareCamsAndTryCapture(CamServiceWorkingMode workingMode = CamServiceWorkingMode.Detection) { this.workingMode = workingMode; cams = new List <CamService>(); var cam1Active = configService.Read <bool>(SettingsType.Cam1CheckBox) && !App.NoCams; var cam2Active = configService.Read <bool>(SettingsType.Cam2CheckBox) && !App.NoCams; var cam3Active = configService.Read <bool>(SettingsType.Cam3CheckBox) && !App.NoCams; var cam4Active = configService.Read <bool>(SettingsType.Cam4CheckBox) && !App.NoCams; if (cam1Active) { cams.Add(new CamService(mainWindow, mainWindow.Cam1Grid.Name, workingMode)); // todo extenstion method... or not } if (cam2Active) { cams.Add(new CamService(mainWindow, mainWindow.Cam2Grid.Name, workingMode)); } if (cam3Active) { cams.Add(new CamService(mainWindow, mainWindow.Cam3Grid.Name, workingMode)); } if (cam4Active) { cams.Add(new CamService(mainWindow, mainWindow.Cam4Grid.Name, workingMode)); } cts = new CancellationTokenSource(); cancelToken = cts.Token; extractionSleepTime = configService.Read <double>(SettingsType.ExtractionSleepTime); thresholdSleepTime = configService.Read <double>(SettingsType.ThresholdSleepTime); moveDetectedSleepTime = configService.Read <double>(SettingsType.MoveDetectedSleepTime); withDetection = configService.Read <bool>(SettingsType.WithDetectionCheckBox) && !App.NoCams; foreach (var cam in cams) { cam.TryQueryFrame(); } }