private void SetCameraSettings(AEMode aeMode, WhiteBalance balance, ApertureValue apertureValue, CameraISOSensitivity cameraIsoSensitivity, ShutterSpeed shutterSpeed) { //_imageProcessor.SetSetting((uint)PropertyId.AEMode, (uint)aeMode); TODO Не поддерживается Eos 1100 _imageProcessor.SetSetting((uint)PropertyId.WhiteBalance, (uint)balance); _imageProcessor.SetSetting((uint)PropertyId.Av, (uint)apertureValue); //_imageProcessor.SetSetting((uint)PropertyId.ExposureCompensation, (uint))); _imageProcessor.SetSetting((uint)PropertyId.ISOSpeed, (uint)cameraIsoSensitivity); _imageProcessor.SetSetting((uint)PropertyId.Tv, (uint)shutterSpeed); }
public virtual async Task<CompositionProcessingResult> TakePictureAsync(byte[] liveViewImageStream, AEMode selectedAeMode, ApertureValue selectedAvValue, CameraISOSensitivity selectedIsoSensitivity, ShutterSpeed selectedShutterSpeed, WhiteBalance selectedWhiteBalance, CancellationToken token) { Size liveViewImageStreamSize; using (var stream = new MemoryStream(liveViewImageStream)) { var img = Image.FromStream(stream); liveViewImageStreamSize = img.Size; } return new CompositionProcessingResult(_pattern, await TakePictureInternal(liveViewImageStreamSize, selectedAeMode, selectedAvValue, selectedIsoSensitivity, selectedShutterSpeed, selectedWhiteBalance, token)); }
public async Task CamerAESetEvent() { AEMode mode = AEMode.FullAuto; camera.AEChanged += (s, e) => { Console.WriteLine("AE changes: {0}", e.EventData); }; camera.AE = AEMode.GainAuto; using (var monitoredSubject = camera.Monitor()) { // Respond Completion visca.ProcessIncomingData(new byte[] { 0x90, 0x50, 0xFF }); await Task.Delay(100); //monitoredSubject.Should().Raise("MemoryRecallComplete").WithSender(camera).WithArgs<ViscaCamera.GenericEventArgs<byte>>(args => args.EventData == 1); camera.AE.Should().Be(AEMode.GainAuto); } }
private async Task <byte[]> Run(Size liveViewImageStreamSize, AEMode selectedAeMode, ApertureValue selectedAvValue, CameraISOSensitivity selectedIsoSensitivity, ShutterSpeed selectedShutterSpeed, WhiteBalance selectedWhiteBalance, CancellationToken token) { var settings = GetCameraPhotoSettings(); var pictures = new List <byte[]>(); for (var i = 0; i < _pattern.Images.Count; i++) { token.ThrowIfCancellationRequested(); RaiseImageNumberChanged(i + 1); RaiseTimerElapsed(4); await Task.Delay(TimeSpan.FromSeconds(2), token); for (var j = 3; j >= 0; j--) { RaiseTimerElapsed(j); await Task.Delay(TimeSpan.FromSeconds(1), token); } SetCameraSettings(Enum.Parse(typeof(AEMode), settings.SelectedAeMode), Enum.Parse(typeof(WhiteBalance), settings.SelectedWhiteBalance), Enum.Parse(typeof(ApertureValue), settings.SelectedAvValue), Enum.Parse(typeof(CameraISOSensitivity), settings.SelectedIsoSensitivity), Enum.Parse(typeof(ShutterSpeed), settings.SelectedShutterSpeed)); //await Task.Delay(TimeSpan.FromSeconds(1)); //RaiseImageNumberChanged(i + 1); //await Task.Delay(TimeSpan.FromSeconds(1), token); token.ThrowIfCancellationRequested(); var picture = await _imageProcessor.DoTakePicture(); pictures.Add(picture); token.ThrowIfCancellationRequested(); //await Task.Delay(TimeSpan.FromSeconds(3), token); //todo SetCameraSettings(selectedAeMode, selectedWhiteBalance, selectedAvValue, selectedIsoSensitivity, selectedShutterSpeed); StopLiveView(); StartLiveView(); } var result = _imageUtils.ProcessImages(pictures, liveViewImageStreamSize, _pattern); return(result); }
private async Task<byte[]> Run(Size liveViewImageStreamSize, AEMode selectedAeMode, ApertureValue selectedAvValue, CameraISOSensitivity selectedIsoSensitivity, ShutterSpeed selectedShutterSpeed, WhiteBalance selectedWhiteBalance, CancellationToken token) { var settings = GetCameraPhotoSettings(); List<byte[]> pictures = new List<byte[]>(); for (int i = 0; i < _pattern.Images.Count; i++) { token.ThrowIfCancellationRequested(); RaiseImageNumberChanged(i + 1); RaiseTimerElapsed(4); await Task.Delay(TimeSpan.FromSeconds(2), token); for (int j = 3; j >= 0; j--) { RaiseTimerElapsed(j); await Task.Delay(TimeSpan.FromSeconds(1), token); } SetCameraSettings(Enum.Parse(typeof(AEMode), settings.SelectedAeMode), Enum.Parse(typeof(WhiteBalance), settings.SelectedWhiteBalance), Enum.Parse(typeof(ApertureValue), settings.SelectedAvValue), Enum.Parse(typeof(CameraISOSensitivity), settings.SelectedIsoSensitivity), Enum.Parse(typeof(ShutterSpeed), settings.SelectedShutterSpeed)); //await Task.Delay(TimeSpan.FromSeconds(1)); //RaiseImageNumberChanged(i + 1); // await Task.Delay(TimeSpan.FromSeconds(1), token); token.ThrowIfCancellationRequested(); byte[] picture = await _imageProcessor.DoTakePicture(); pictures.Add(picture); token.ThrowIfCancellationRequested(); // await Task.Delay(TimeSpan.FromSeconds(3), token); //todo SetCameraSettings(selectedAeMode, selectedWhiteBalance, selectedAvValue, selectedIsoSensitivity, selectedShutterSpeed); StopLiveView(); StartLiveView(); } byte[] result = _imageUtils.ProcessImages(pictures, liveViewImageStreamSize, _pattern); return result; }
private void SetupSavedCameraSettings() { var settings = _settingsProvider.GetCameraSettings(); if (settings == null) { SelectedAeMode = AEModeValues.First().Key; SelectedAvValue = AvValues.First().Key; SelectedCompensation = ExposureValues.First().Key; SelectedIsoSensitivity = ISOValues.First().Key; SelectedShutterSpeed = ShutterSpeedValues.First().Key; SelectedWhiteBalance = WhiteBalanceValues.First().Key; SelectedPhotoAeMode = AEModeValues.First().Key; SelectedPhotoAvValue = AvValues.First().Key; SelectedPhotoCompensation = ExposureValues.First().Key; SelectedPhotoIsoSensitivity = ISOValues.First().Key; SelectedPhotoShutterSpeed = ShutterSpeedValues.First().Key; SelectedPhotoWhiteBalance = WhiteBalanceValues.First().Key; return; } SelectedAeMode = settings.SelectedAeMode; SelectedAvValue = settings.SelectedAvValue; SelectedCompensation = settings.SelectedCompensation; SelectedIsoSensitivity = settings.SelectedIsoSensitivity; SelectedShutterSpeed = settings.SelectedShutterSpeed; SelectedWhiteBalance = settings.SelectedWhiteBalance; SelectedPhotoAeMode = settings.SelectedPhotoAeMode; SelectedPhotoAvValue = settings.SelectedPhotoAvValue; SelectedPhotoCompensation = settings.SelectedPhotoCompensation; SelectedPhotoIsoSensitivity = settings.SelectedPhotoIsoSensitivity; SelectedPhotoShutterSpeed = settings.SelectedPhotoShutterSpeed; SelectedPhotoWhiteBalance = settings.SelectedPhotoWhiteBalance; #region Костыль, если не поменять свойство выдержки на рядом стоящие значения, то смена остальных свойств не будет сразу применяться в LiveView SelectedShutterSpeed = settings.SelectedShutterSpeed.GetNextEnumValue(); SelectedShutterSpeed = settings.SelectedShutterSpeed.GetNextEnumValue(); SelectedShutterSpeed = settings.SelectedShutterSpeed; #endregion }
protected async Task<byte[]> TakePictureInternal(Size liveViewImageStreamSize, AEMode selectedAeMode, ApertureValue selectedAvValue, CameraISOSensitivity selectedIsoSensitivity, ShutterSpeed selectedShutterSpeed, WhiteBalance selectedWhiteBalance, CancellationToken token) { return await Task.Run(() => Run(liveViewImageStreamSize, selectedAeMode, selectedAvValue, selectedIsoSensitivity, selectedShutterSpeed, selectedWhiteBalance, token), token); }
private void SetCameraSettings(AEMode aeMode, WhiteBalance balance, ApertureValue apertureValue, CameraISOSensitivity cameraIsoSensitivity, ShutterSpeed shutterSpeed) { _imageProcessor.SetSetting((uint)PropertyId.AEMode, (uint)aeMode); _imageProcessor.SetSetting((uint)PropertyId.WhiteBalance, (uint)balance); _imageProcessor.SetSetting((uint)PropertyId.Av, (uint)apertureValue); //_imageProcessor.SetSetting((uint)PropertyId.ExposureCompensation, (uint))); _imageProcessor.SetSetting((uint)PropertyId.ISOSpeed, (uint)cameraIsoSensitivity); _imageProcessor.SetSetting((uint)PropertyId.Tv, (uint)shutterSpeed); }
protected async Task <byte[]> TakePictureInternal(Size liveViewImageStreamSize, AEMode selectedAeMode, ApertureValue selectedAvValue, CameraISOSensitivity selectedIsoSensitivity, ShutterSpeed selectedShutterSpeed, WhiteBalance selectedWhiteBalance, CancellationToken token) { return(await Task.Run(() => Run(liveViewImageStreamSize, selectedAeMode, selectedAvValue, selectedIsoSensitivity, selectedShutterSpeed, selectedWhiteBalance, token), token)); }
public virtual async Task <CompositionProcessingResult> TakePictureAsync(byte[] liveViewImageStream, AEMode selectedAeMode, ApertureValue selectedAvValue, CameraISOSensitivity selectedIsoSensitivity, ShutterSpeed selectedShutterSpeed, WhiteBalance selectedWhiteBalance, CancellationToken token) { Size liveViewImageStreamSize; using (var stream = new MemoryStream(liveViewImageStream)) { var img = Image.FromStream(stream); liveViewImageStreamSize = img.Size; } return(new CompositionProcessingResult(_pattern, await TakePictureInternal(liveViewImageStreamSize, selectedAeMode, selectedAvValue, selectedIsoSensitivity, selectedShutterSpeed, selectedWhiteBalance, token))); }