コード例 #1
0
        /// <summary>
        /// Gets the image white balance information.
        /// </summary>
        /// <returns></returns>
        private WhiteBalance GetImageWhiteBalance()
        {
            WhiteBalance wbInfo = new WhiteBalance();

            try
            {
                PropertyItem piWhiteBalanceInfo = GetImageProperty(Constants.WhiteBalance);
                if (piWhiteBalanceInfo != null && piWhiteBalanceInfo.Type == 3)
                {
                    double whiteBalanceModeInfoValue = 0.00;
                    for (int count = 0; count < piWhiteBalanceInfo.Value.Length; count++)
                    {
                        whiteBalanceModeInfoValue += piWhiteBalanceInfo.Value[count] * Math.Pow(256, count);
                    }
                    int whiteBalanceModeInfoData = Convert.ToInt32(whiteBalanceModeInfoValue);
                    wbInfo = (WhiteBalance)whiteBalanceModeInfoData;
                }
                else
                {
                    wbInfo = WhiteBalance.Unknown;
                }
            }
            catch (Exception)
            {
                wbInfo = WhiteBalance.Unknown;
            }
            return(wbInfo);
        }
コード例 #2
0
 /// <summary>
 /// Gets all the image property values.
 /// </summary>
 private void GetAllImagePropertyValues()
 {
     try
     {
         this.cameraMake                = GetCameraMake();
         this.cameraModel               = GetCameraSpecificModel();
         this.aperture                  = GetApertureData();
         this.shutterSpeed              = GetExposureTime();
         this.iso                       = GetISOInformation();
         this.focalLength               = GetFocalLengthInformation();
         this.pixelXDimension           = GetPixelDimension(Dimension.X);
         this.pixelYDimension           = GetPixelDimension(Dimension.Y);
         this.imageFileSource           = GetImageFileSource();
         this.flash                     = GetFlashInformation();
         this.createdDateTimeStamp      = GetImageDateTimeStamps(ImageTimeStamps.Created);
         this.modifiedDateTimeStamp     = GetImageDateTimeStamps(ImageTimeStamps.Modified);
         this.exposureCompensation      = GetExposureCompensation();
         this.imageSceneMode            = GetImageSceneMode();
         this.meteringMode              = GetMeteringModeInfo();
         this.imageExposureMode         = GetImageExposureMode();
         this.imageWhiteBalance         = GetImageWhiteBalance();
         this.imageSubjectDistanceRange = GetImageSubjectDistanceInformation();
         this.focalLength35mmEquivalent = GetFocalLength35mmEquivalent();
     }
     catch (Exception)
     {
     }
 }
コード例 #3
0
 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);
 }
コード例 #4
0
        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));
        }
コード例 #5
0
 void OnDestroy()
 {
     GameObject.Destroy(this.lightObject);
     this.lightObject         = null;
     this.skyDirectionalLight = null;
     this.hdLight             = null;
     this.timer        = null;
     this.dayFlare     = null;
     this.nightFlare   = null;
     this.volume       = null;
     this.pbsky        = null;
     this.clouds       = null;
     this.whiteBalance = null;
 }
コード例 #6
0
        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;
        }
コード例 #7
0
ファイル: GameManager.cs プロジェクト: Jadw1/LudumDare46V2
    private void Awake()
    {
        player           = GameObject.FindWithTag("Player")?.transform;
        characterManager = player.GetComponent <CharacterManager>();
        torch            = player.GetComponentInChildren <Torch>();
        layerManager     = GameObject.FindWithTag("Game Controller")?.GetComponent <LayerManager>();
        temperature      = postProcessing.components[1] as WhiteBalance;
        deathAnimator    = GameObject.FindWithTag("UI")?.GetComponent <Animator>();

        if (!player || !layerManager || !postProcessing || !temperature)
        {
            throw new Exception("LOL XD");
        }


        tickCounter     = 0;
        tickToDieInDark = lifeTimeInDark;
        savedObjects    = new List <DestructableEntity>();
    }
コード例 #8
0
        async void InitMediaCapture()
        {
            _imageProperties        = ImageEncodingProperties.CreateBmp();
            _imageProperties.Width  = WIDTH;
            _imageProperties.Height = HEIGHT;

            Camera = new MediaCapture();
            var settings = new MediaCaptureInitializationSettings
            {
                MediaCategory = MediaCategory.Media
            };
            await Camera.InitializeAsync(settings);

            Camera.VideoDeviceController.DesiredOptimization = MediaCaptureOptimization.Quality;
            Camera.VideoDeviceController.PrimaryUse          = CaptureUse.Photo;


            WhiteBalance           = Camera.VideoDeviceController.WhiteBalance;
            WhiteBalSlider.Minimum = WhiteBalance.Capabilities.Min;
            WhiteBalSlider.Maximum = WhiteBalance.Capabilities.Max;
            Double value;

            WhiteBalance.TryGetValue(out value);
            WhiteBalSlider.Value = value;

            PreviewElement.Source = Camera;
            await Camera.StartPreviewAsync();

            await TakePicture();

            Task.Run(async() =>
            {
                while (true)
                {
                    await TakePicture();
                    Task.Delay(100).Wait();
                }
            });

            InitTimer();
        }
コード例 #9
0
        public string AsWhiteBalance()
        {
            WhiteBalance whiteBalance = (WhiteBalance)Value;

            switch (whiteBalance)
            {
            case WhiteBalance.Auto: return("Auto");

            case WhiteBalance.Daylight: return("Daylight");

            case WhiteBalance.Incandescent: return("Incandescent");

            case WhiteBalance.Flash: return("Flash");

            case WhiteBalance.Fluor_WarmWhite: return("Fluor: Warm White");

            case WhiteBalance.Fluor_CoolWhite: return("Fluor: Cool White");

            case WhiteBalance.Fluor_DayWhite: return("Fluor: Day White");

            case WhiteBalance.Fluor_Daylight: return("Fluor: Daylight");

            case WhiteBalance.Cloudy: return("Cloudy");

            case WhiteBalance.Shade: return("Shade");

            case WhiteBalance.CTempFilter: return("C.Temp/Filter");

            case WhiteBalance.Custom1: return("Custom 1");

            case WhiteBalance.Custom2: return("Custom 2");

            case WhiteBalance.Custom3: return("Custom 3");

            case WhiteBalance.UnderwaterAuto: return("Underwater Auto");

            default: return("???(" + Value + ")");
            }
        }
コード例 #10
0
        /// <summary>
        /// config the snapshot
        /// </summary>
        /// <param name="wb">WhiteBalance</param>
        /// <param name="ev">explosure value</param>
        /// <param name="contrast">Contrast</param>
        /// <param name="ce">ColorEffect</param>
        /// <param name="sharp">Sharpness</param>
        /// <returns>True if succeed</returns>
        public bool ConfigSnapshot(WhiteBalance wb, EV ev, Contrast contrast, ColorEffect ce, Sharpness sharp)
        {
            byte[] writeBuffer = new byte[5];

            writeBuffer[0] = (byte)wb;
            writeBuffer[1] = (byte)ev;
            writeBuffer[2] = (byte)contrast;
            writeBuffer[3] = (byte)ce;
            writeBuffer[4] = (byte)sharp;

            CreatCommand(5, CMD_SNAPSHOT_CONFIG);
            CreatCommand(writeBuffer);

            SendCommand(id_cmd);
            SendCommand(para_cmd);

            if (!ReceiveACK(CMD_SNAPSHOT_CONFIG, 100))
            {
                return(false);
            }

            return(true);
        }
コード例 #11
0
 public void SetWhiteBalance(WhiteBalance whiteBalance)
 {
     DoSubSettingI16(SettingIds.WhiteBalance, (short)whiteBalance);
 }
コード例 #12
0
        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)));
        }
コード例 #13
0
        Tag CreateSpecificTag(TagInfo info, string numberValue)
        {
            try
            {
                if (info.IsGps)
                {
                    switch (info.Name.ToLower())
                    {
                    case "gpslatituderef":
                        return(new Tag <GpsLatitudeRef> {
                            TypedValue = GpsLatitudeRef.FromKey(numberValue)
                        });

                    case "gpslongituderef":
                        return(new Tag <GpsLongitudeRef> {
                            TypedValue = GpsLongitudeRef.FromKey(numberValue)
                        });

                    case "gpsaltituderef":
                        return(new Tag <GpsAltitudeRef> {
                            TypedValue = GpsAltitudeRef.FromKey(byte.Parse(numberValue))
                        });

                    case "gpsstatus":
                        return(new Tag <GpsStatus> {
                            TypedValue = GpsStatus.FromKey(numberValue)
                        });

                    case "gpsmeasuremode":
                        return(new Tag <GpsMeasureMode> {
                            TypedValue = GpsMeasureMode.FromKey(numberValue)
                        });

                    case "gpsspeedref":
                        return(new Tag <GpsSpeedRef> {
                            TypedValue = GpsSpeedRef.FromKey(numberValue)
                        });

                    case "gpstrackref":
                        return(new Tag <GpsTrackRef> {
                            TypedValue = GpsTrackRef.FromKey(numberValue)
                        });

                    case "gpsimgdirectionref":
                        return(new Tag <GpsImgDirectionRef> {
                            TypedValue = GpsImgDirectionRef.FromKey(numberValue)
                        });

                    case "gpsdestlatituderef":
                        return(new Tag <GpsDestLatitudeRef> {
                            TypedValue = GpsDestLatitudeRef.FromKey(numberValue)
                        });

                    case "gpsdestlongituderef":
                        return(new Tag <GpsDestLongitudeRef> {
                            TypedValue = GpsDestLongitudeRef.FromKey(numberValue)
                        });

                    case "gpsdestbearingref":
                        return(new Tag <GpsDestBearingRef> {
                            TypedValue = GpsDestBearingRef.FromKey(numberValue)
                        });

                    case "gpsdestdistanceref":
                        return(new Tag <GpsDestDistanceRef> {
                            TypedValue = GpsDestDistanceRef.FromKey(numberValue)
                        });

                    case "gpsdifferential":
                        return(new Tag <GpsDifferential> {
                            TypedValue = GpsDifferential.FromKey(ushort.Parse(numberValue))
                        });
                    }
                }

                if (info.IsNikon)
                {
                    switch (info.Name.ToLower())
                    {
                    case "colorspace":
                        return(new Tag <NikonColorSpace> {
                            TypedValue = NikonColorSpace.FromKey(ushort.Parse(numberValue))
                        });

                    case "vibrationreduction":
                        return(new Tag <NikonVibrationReduction> {
                            TypedValue = NikonVibrationReduction.FromKey(byte.Parse(numberValue))
                        });

                    case "vrmode":
                        return(new Tag <NikonVRMode> {
                            TypedValue = NikonVRMode.FromKey(byte.Parse(numberValue))
                        });

                    case "imageauthentication":
                        return(new Tag <NikonImageAuthentication> {
                            TypedValue = NikonImageAuthentication.FromKey(byte.Parse(numberValue))
                        });

                    case "actived-lighting":
                        return(new Tag <NikonActiveDLighting> {
                            TypedValue = NikonActiveDLighting.FromKey(ushort.Parse(numberValue))
                        });

                    case "picturecontroladjust":
                        return(new Tag <NikonPictureControlAdjust> {
                            TypedValue = NikonPictureControlAdjust.FromKey(byte.Parse(numberValue))
                        });

                    case "filtereffect":
                        return(new Tag <NikonFilterEffect> {
                            TypedValue = NikonFilterEffect.FromKey(byte.Parse(numberValue))
                        });

                    case "toningeffect":
                        return(new Tag <NikonToningEffect> {
                            TypedValue = NikonToningEffect.FromKey(byte.Parse(numberValue))
                        });

                    case "daylightsavings":
                        return(new Tag <NikonDaylightSavings> {
                            TypedValue = NikonDaylightSavings.FromKey(byte.Parse(numberValue))
                        });

                    case "datedisplayformat":
                        return(new Tag <NikonDateDisplayFormat> {
                            TypedValue = NikonDateDisplayFormat.FromKey(byte.Parse(numberValue))
                        });

                    case "isoexpansion":
                        return(new Tag <NikonIsoExpansion> {
                            TypedValue = NikonIsoExpansion.FromKey(ushort.Parse(numberValue))
                        });

                    case "isoexpansion2":
                        return(new Tag <NikonIsoExpansion2> {
                            TypedValue = NikonIsoExpansion2.FromKey(ushort.Parse(numberValue))
                        });

                    case "vignettecontrol":
                        return(new Tag <NikonVignetteControl> {
                            TypedValue = NikonVignetteControl.FromKey(ushort.Parse(numberValue))
                        });

                    case "autodistortioncontrol":
                        return(new Tag <NikonAutoDistortionControl> {
                            TypedValue = NikonAutoDistortionControl.FromKey(byte.Parse(numberValue))
                        });

                    case "hdr":
                        return(new Tag <NikonHdr> {
                            TypedValue = NikonHdr.FromKey(byte.Parse(numberValue))
                        });

                    case "hdrlevel":
                        return(new Tag <NikonHdrLevel> {
                            TypedValue = NikonHdrLevel.FromKey(byte.Parse(numberValue))
                        });

                    case "hdrsmoothing":
                        return(new Tag <NikonHdrSmoothing> {
                            TypedValue = NikonHdrSmoothing.FromKey(byte.Parse(numberValue))
                        });

                    case "hdrlevel2":
                        return(new Tag <NikonHdrLevel2> {
                            TypedValue = NikonHdrLevel2.FromKey(byte.Parse(numberValue))
                        });

                    case "textencoding":
                        return(new Tag <NikonTextEncoding> {
                            TypedValue = NikonTextEncoding.FromKey(byte.Parse(numberValue))
                        });

                    case "flashmode":
                        return(new Tag <NikonFlashMode> {
                            TypedValue = NikonFlashMode.FromKey(byte.Parse(numberValue))
                        });

                    case "afareamode":
                        return(new Tag <NikonAfAreaMode> {
                            TypedValue = NikonAfAreaMode.FromKey(byte.Parse(numberValue))
                        });

                    case "afpoint":
                        return(new Tag <NikonAfPoint> {
                            TypedValue = NikonAfPoint.FromKey(byte.Parse(numberValue))
                        });

                    case "afpointsinfocus":
                        return(new Tag <NikonAfPointsInFocus> {
                            TypedValue = NikonAfPointsInFocus.FromKey(ushort.Parse(numberValue))
                        });

                    case "nefcompression":
                        return(new Tag <NikonNefCompression> {
                            TypedValue = NikonNefCompression.FromKey(ushort.Parse(numberValue))
                        });

                    case "retouchhistory":
                        return(new Tag <NikonRetouchHistory> {
                            TypedValue = NikonRetouchHistory.FromKey(ushort.Parse(numberValue))
                        });

                    case "flashsource":
                        return(new Tag <NikonFlashSource> {
                            TypedValue = NikonFlashSource.FromKey(byte.Parse(numberValue))
                        });

                    case "flashcolorfilter":
                        return(new Tag <NikonFlashColorFilter> {
                            TypedValue = NikonFlashColorFilter.FromKey(byte.Parse(numberValue))
                        });

                    case "highisonoisereduction":
                        return(new Tag <NikonHighIsoNoiseReduction> {
                            TypedValue = NikonHighIsoNoiseReduction.FromKey(ushort.Parse(numberValue))
                        });
                    }
                }

                if (info.IsExif)
                {
                    switch (info.Name.ToLower())
                    {
                    case "interopindex":
                        return(new Tag <InteropIndex> {
                            TypedValue = InteropIndex.FromKey(numberValue)
                        });

                    case "subfiletype":
                        return(new Tag <SubfileType> {
                            TypedValue = SubfileType.FromKey(uint.Parse(numberValue))
                        });

                    case "oldsubfiletype":
                        return(new Tag <OldSubfileType> {
                            TypedValue = OldSubfileType.FromKey(ushort.Parse(numberValue))
                        });

                    case "compression":
                        return(new Tag <Compression> {
                            TypedValue = Compression.FromKey(ushort.Parse(numberValue))
                        });

                    case "photometricinterpretation":
                        return(new Tag <PhotometricInterpretation> {
                            TypedValue = PhotometricInterpretation.FromKey(ushort.Parse(numberValue))
                        });

                    case "thresholding":
                        return(new Tag <Thresholding> {
                            TypedValue = Thresholding.FromKey(ushort.Parse(numberValue))
                        });

                    case "fillorder":
                        return(new Tag <FillOrder> {
                            TypedValue = FillOrder.FromKey(ushort.Parse(numberValue))
                        });

                    case "orientation":
                        return(new Tag <Orientation> {
                            TypedValue = Orientation.FromKey(ushort.Parse(numberValue))
                        });

                    case "planarconfiguration":
                        return(new Tag <PlanarConfiguration> {
                            TypedValue = PlanarConfiguration.FromKey(ushort.Parse(numberValue))
                        });

                    case "grayresponseunit":
                        return(new Tag <GrayResponseUnit> {
                            TypedValue = GrayResponseUnit.FromKey(ushort.Parse(numberValue))
                        });

                    case "resolutionunit":
                        return(new Tag <ResolutionUnit> {
                            TypedValue = ResolutionUnit.FromKey(ushort.Parse(numberValue))
                        });

                    case "predictor":
                        return(new Tag <Predictor> {
                            TypedValue = Predictor.FromKey(ushort.Parse(numberValue))
                        });

                    case "cleanfaxdata":
                        return(new Tag <CleanFaxData> {
                            TypedValue = CleanFaxData.FromKey(ushort.Parse(numberValue))
                        });

                    case "inkset":
                        return(new Tag <InkSet> {
                            TypedValue = InkSet.FromKey(ushort.Parse(numberValue))
                        });

                    case "extrasamples":
                        return(new Tag <ExtraSamples> {
                            TypedValue = ExtraSamples.FromKey(ushort.Parse(numberValue))
                        });

                    case "sampleformat":
                        return(new Tag <SampleFormat> {
                            TypedValue = SampleFormat.FromKey(ushort.Parse(numberValue))
                        });

                    case "indexed":
                        return(new Tag <Indexed> {
                            TypedValue = Indexed.FromKey(ushort.Parse(numberValue))
                        });

                    case "opiproxy":
                        return(new Tag <OpiProxy> {
                            TypedValue = OpiProxy.FromKey(ushort.Parse(numberValue))
                        });

                    case "profiletype":
                        return(new Tag <ProfileType> {
                            TypedValue = ProfileType.FromKey(ushort.Parse(numberValue))
                        });

                    case "faxprofile":
                        return(new Tag <FaxProfile> {
                            TypedValue = FaxProfile.FromKey(ushort.Parse(numberValue))
                        });

                    case "jpegproc":
                        return(new Tag <JpegProc> {
                            TypedValue = JpegProc.FromKey(ushort.Parse(numberValue))
                        });

                    case "ycbcrsubsampling":
                        return(new Tag <YCbCrSubSampling> {
                            TypedValue = YCbCrSubSampling.FromKey(numberValue)
                        });

                    case "ycbcrpositioning":
                        return(new Tag <YCbCrPositioning> {
                            TypedValue = YCbCrPositioning.FromKey(ushort.Parse(numberValue))
                        });

                    case "sonyrawfiletype":
                        return(new Tag <SonyRawFileType> {
                            TypedValue = SonyRawFileType.FromKey(ushort.Parse(numberValue))
                        });

                    case "rasterpadding":
                        return(new Tag <RasterPadding> {
                            TypedValue = RasterPadding.FromKey(ushort.Parse(numberValue))
                        });

                    case "imagecolorindicator":
                        return(new Tag <ImageColorIndicator> {
                            TypedValue = ImageColorIndicator.FromKey(ushort.Parse(numberValue))
                        });

                    case "backgroundcolorindicator":
                        return(new Tag <BackgroundColorIndicator> {
                            TypedValue = BackgroundColorIndicator.FromKey(ushort.Parse(numberValue))
                        });

                    case "hcusage":
                        return(new Tag <HCUsage> {
                            TypedValue = HCUsage.FromKey(ushort.Parse(numberValue))
                        });

                    case "exposureprogram":
                        return(new Tag <ExposureProgram> {
                            TypedValue = ExposureProgram.FromKey(ushort.Parse(numberValue))
                        });

                    case "sensitivitytype":
                        return(new Tag <SensitivityType> {
                            TypedValue = SensitivityType.FromKey(ushort.Parse(numberValue))
                        });

                    case "componentsconfiguration":
                        return(new Tag <ComponentsConfiguration> {
                            TypedValue = ComponentsConfiguration.FromKey(ushort.Parse(numberValue))
                        });

                    case "meteringmode":
                        return(new Tag <MeteringMode> {
                            TypedValue = MeteringMode.FromKey(ushort.Parse(numberValue))
                        });

                    case "lightsource":
                    case "calibrationilluminant1":
                    case "calibrationilluminant2":
                        return(new Tag <LightSource> {
                            TypedValue = LightSource.FromKey(ushort.Parse(numberValue))
                        });

                    case "flash":
                        return(new Tag <FlashValue> {
                            TypedValue = FlashValue.FromKey(ushort.Parse(numberValue))
                        });

                    case "focalplaneresolutionunit":
                        return(new Tag <FocalPlaneResolutionUnit> {
                            TypedValue = FocalPlaneResolutionUnit.FromKey(ushort.Parse(numberValue))
                        });

                    case "securityclassification":
                        return(new Tag <SecurityClassification> {
                            TypedValue = SecurityClassification.FromKey(numberValue)
                        });

                    case "sensingmethod":
                        return(new Tag <SensingMethod> {
                            TypedValue = SensingMethod.FromKey(ushort.Parse(numberValue))
                        });

                    case "colorspace":
                        return(new Tag <ColorSpace> {
                            TypedValue = ColorSpace.FromKey(ushort.Parse(numberValue))
                        });

                    case "filesource":
                        return(new Tag <FileSource> {
                            TypedValue = FileSource.FromKey(ushort.Parse(numberValue))
                        });

                    case "scenetype":
                        return(new Tag <SceneType> {
                            TypedValue = SceneType.FromKey(ushort.Parse(numberValue))
                        });

                    case "customrendered":
                        return(new Tag <CustomRendered> {
                            TypedValue = CustomRendered.FromKey(ushort.Parse(numberValue))
                        });

                    case "exposuremode":
                        return(new Tag <ExposureMode> {
                            TypedValue = ExposureMode.FromKey(ushort.Parse(numberValue))
                        });

                    case "whitebalance":
                        return(new Tag <WhiteBalance> {
                            TypedValue = WhiteBalance.FromKey(ushort.Parse(numberValue))
                        });

                    case "scenecapturetype":
                        return(new Tag <SceneCaptureType> {
                            TypedValue = SceneCaptureType.FromKey(ushort.Parse(numberValue))
                        });

                    case "gaincontrol":
                        return(new Tag <GainControl> {
                            TypedValue = GainControl.FromKey(ushort.Parse(numberValue))
                        });

                    case "contrast":
                        return(new Tag <Contrast> {
                            TypedValue = Contrast.FromKey(ushort.Parse(numberValue))
                        });

                    case "saturation":
                        return(new Tag <Saturation> {
                            TypedValue = Saturation.FromKey(ushort.Parse(numberValue))
                        });

                    case "sharpness":
                        return(new Tag <Sharpness> {
                            TypedValue = Sharpness.FromKey(ushort.Parse(numberValue))
                        });

                    case "subjectdistancerange":
                        return(new Tag <SubjectDistanceRange> {
                            TypedValue = SubjectDistanceRange.FromKey(ushort.Parse(numberValue))
                        });

                    case "pixelformat":
                        return(new Tag <PixelFormat> {
                            TypedValue = PixelFormat.FromKey(ushort.Parse(numberValue))
                        });

                    case "transformation":
                        return(new Tag <Transformation> {
                            TypedValue = Transformation.FromKey(ushort.Parse(numberValue))
                        });

                    case "uncompressed":
                        return(new Tag <Uncompressed> {
                            TypedValue = Uncompressed.FromKey(ushort.Parse(numberValue))
                        });

                    case "imagedatadiscard":
                        return(new Tag <ImageDataDiscard> {
                            TypedValue = ImageDataDiscard.FromKey(ushort.Parse(numberValue))
                        });

                    case "alphadatadiscard":
                        return(new Tag <AlphaDataDiscard> {
                            TypedValue = AlphaDataDiscard.FromKey(ushort.Parse(numberValue))
                        });

                    case "usptooriginalcontenttype":
                        return(new Tag <USPTOOriginalContentType> {
                            TypedValue = USPTOOriginalContentType.FromKey(ushort.Parse(numberValue))
                        });

                    case "cfalayout":
                        return(new Tag <CFALayout> {
                            TypedValue = CFALayout.FromKey(ushort.Parse(numberValue))
                        });

                    case "makernotesafety":
                        return(new Tag <MakerNoteSafety> {
                            TypedValue = MakerNoteSafety.FromKey(ushort.Parse(numberValue))
                        });

                    case "profileembedpolicy":
                        return(new Tag <ProfileEmbedPolicy> {
                            TypedValue = ProfileEmbedPolicy.FromKey(ushort.Parse(numberValue))
                        });

                    case "previewcolorspace":
                        return(new Tag <PreviewColorSpace> {
                            TypedValue = PreviewColorSpace.FromKey(ushort.Parse(numberValue))
                        });

                    case "profilehuesatmapencoding":
                        return(new Tag <ProfileHueSatMapEncoding> {
                            TypedValue = ProfileHueSatMapEncoding.FromKey(ushort.Parse(numberValue))
                        });

                    case "profilelooktableencoding":
                        return(new Tag <ProfileLookTableEncoding> {
                            TypedValue = ProfileLookTableEncoding.FromKey(ushort.Parse(numberValue))
                        });

                    case "defaultblackrender":
                        return(new Tag <DefaultBlackRender> {
                            TypedValue = DefaultBlackRender.FromKey(ushort.Parse(numberValue))
                        });
                    }
                }

                // ---- VALUE TAG ----
                if (string.IsNullOrEmpty(info.ValueType))
                {
                    return(new Tag());
                }

                switch (info.ValueType.ToLower())
                {
                case "int8u":
                    return(new Tag <byte> {
                        TypedValue = byte.Parse(numberValue)
                    });

                case "int8s":
                    return(new Tag <sbyte> {
                        TypedValue = sbyte.Parse(numberValue)
                    });

                case "int16u":
                    return(new Tag <ushort> {
                        TypedValue = ushort.Parse(numberValue)
                    });

                case "int16s":
                    return(new Tag <short> {
                        TypedValue = short.Parse(numberValue)
                    });

                case "int32u":
                    return(new Tag <uint> {
                        TypedValue = uint.Parse(numberValue)
                    });

                case "integer":
                case "int32s":
                    return(new Tag <int> {
                        TypedValue = int.Parse(numberValue)
                    });

                case "int64u":
                    return(new Tag <ulong> {
                        TypedValue = ulong.Parse(numberValue)
                    });

                case "int64s":
                    return(new Tag <long> {
                        TypedValue = long.Parse(numberValue)
                    });

                case "float":
                case "rational32s":
                case "rational32u":
                    return(new Tag <float> {
                        TypedValue = float.Parse(numberValue)
                    });

                case "double":
                case "rational":
                case "rational64s":
                case "rational64u":
                case "real":
                    return(new Tag <double> {
                        TypedValue = double.Parse(numberValue)
                    });

                case "boolean":
                    return(new Tag <bool> {
                        TypedValue = bool.Parse(numberValue)
                    });
                }
            }
            catch
            {
                if (!Quiet)
                {
                    Console.WriteLine($"error converting {info.TableName}::{info.Id} with name {info.Name}.  Expected type: {info.ValueType} but got value: {numberValue}");
                }
            }

            return(new Tag());
        }
コード例 #14
0
 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);
 }
コード例 #15
0
 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);
 }
コード例 #16
0
 public static void SetWhiteBalance(Device devnum, WhiteBalance value)
 {
     throw new NotImplementedException("なにこれ");
 }
コード例 #17
0
ファイル: Hero3Camera.cs プロジェクト: slamj1/GoPro.Hero
 public Hero3Camera WhiteBalance(WhiteBalance whiteBalance, bool nonBlocking = false)
 {
     return(ExecuteMultiChoiceCommand <CommandCameraWhiteBalance, WhiteBalance>(whiteBalance, nonBlocking));
 }
コード例 #18
0
 public async Task SetWhiteBalanceAsync(WhiteBalance wb)
 {
     await NoValue(RequestGenerator.Jsonize("setWhiteBalance", wb.Mode, wb.ColorTemperature != WhiteBalance.InvalidColorTemperture, wb.ColorTemperature)).ConfigureAwait(false);
 }
コード例 #19
0
ファイル: Hero3Camera.cs プロジェクト: slamj1/GoPro.Hero
 public Hero3Camera WhiteBalance(out WhiteBalance whiteBalance)
 {
     whiteBalance = base.ExtendedSettings().WhiteBalance;
     return(this);
 }
コード例 #20
0
ファイル: Hero3Camera.cs プロジェクト: slamj1/GoPro.Hero
 public async Task <Hero3Camera> WhiteBalanceAsync(WhiteBalance whiteBalance)
 {
     return(await base.PrepareCommand <CommandCameraWhiteBalance>().Select(whiteBalance).ExecuteAsync() as Hero3Camera);
 }
コード例 #21
0
 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));
 }
コード例 #22
0
        public override void ReadDeviceProperties(uint prop)
        {
            //lock (Locker)
            //{
            try
            {
                HaveLiveView = true;
                switch (prop)
                {
                case CONST_PROP_Fnumber:
                    //FNumber.SetValue(_stillImageDevice.ExecuteReadData(CONST_CMD_GetDevicePropValue, CONST_PROP_Fnumber));
                    ReInitFNumber(false);
                    break;

                case CONST_PROP_MovieFnumber:
                    //FNumber.SetValue(_stillImageDevice.ExecuteReadData(CONST_CMD_GetDevicePropValue, CONST_PROP_Fnumber));
                    ReInitFNumber(false);
                    break;

                case CONST_PROP_ExposureIndex:
                    NormalIsoNumber.SetValue(StillImageDevice.ExecuteReadData(CONST_CMD_GetDevicePropValue,
                                                                              CONST_PROP_ExposureIndex), false);
                    break;

                //case CONST_PROP_ExposureIndexEx:
                //    NormalIsoNumber.SetValue(StillImageDevice.ExecuteReadData(CONST_CMD_GetDevicePropValue,
                //                                                        CONST_PROP_ExposureIndexEx), false);
                //    break;
                case CONST_PROP_MovieExposureIndex:
                    MovieFNumber.SetValue(StillImageDevice.ExecuteReadData(CONST_CMD_GetDevicePropValue,
                                                                           CONST_PROP_MovieExposureIndex), false);
                    break;

                //case CONST_PROP_ExposureTime:
                //    NormalShutterSpeed.SetValue(StillImageDevice.ExecuteReadData(CONST_CMD_GetDevicePropValue,
                //                                                           CONST_PROP_ExposureTime), false);
                //    break;
                case CONST_PROP_ShutterSpeed:
                    NormalShutterSpeed.SetValue(StillImageDevice.ExecuteReadData(CONST_CMD_GetDevicePropValue,
                                                                                 CONST_PROP_ShutterSpeed), false);
                    break;

                case CONST_PROP_MovieShutterSpeed:
                    MovieShutterSpeed.SetValue(StillImageDevice.ExecuteReadData(CONST_CMD_GetDevicePropValue,
                                                                                CONST_PROP_MovieShutterSpeed), false);
                    break;

                case CONST_PROP_WhiteBalance:
                    WhiteBalance.SetValue(StillImageDevice.ExecuteReadData(CONST_CMD_GetDevicePropValue,
                                                                           CONST_PROP_WhiteBalance), false);
                    break;

                case CONST_PROP_ExposureProgramMode:
                    Mode.SetValue(StillImageDevice.ExecuteReadData(CONST_CMD_GetDevicePropValue,
                                                                   CONST_PROP_ExposureProgramMode), true);
                    break;

                case CONST_PROP_ExposureBiasCompensation:
                    NormalExposureCompensation.SetValue(StillImageDevice.ExecuteReadData(CONST_CMD_GetDevicePropValue,
                                                                                         CONST_PROP_ExposureBiasCompensation),
                                                        false);
                    break;

                case CONST_PROP_MovieExposureBiasCompensation:
                    MovieExposureCompensation.SetValue(StillImageDevice.ExecuteReadData(CONST_CMD_GetDevicePropValue,
                                                                                        CONST_PROP_MovieExposureBiasCompensation),
                                                       false);
                    break;

                case CONST_PROP_CompressionSetting:
                    CompressionSetting.SetValue(StillImageDevice.ExecuteReadData(CONST_CMD_GetDevicePropValue,
                                                                                 CONST_PROP_CompressionSetting),
                                                false);
                    break;

                case CONST_PROP_ExposureMeteringMode:
                    ExposureMeteringMode.SetValue(StillImageDevice.ExecuteReadData(CONST_CMD_GetDevicePropValue,
                                                                                   CONST_PROP_ExposureMeteringMode),
                                                  false);
                    break;

                case CONST_PROP_AFModeSelect:
                    NormalFocusMode.SetValue(
                        StillImageDevice.ExecuteReadData(CONST_CMD_GetDevicePropValue, CONST_PROP_AFModeSelect),
                        false);
                    NormalFocusMode.IsEnabled = NormalFocusMode.NumericValue != 3;
                    break;

                case CONST_PROP_AfModeAtLiveView:
                    LiveViewFocusMode.SetValue(
                        StillImageDevice.ExecuteReadData(CONST_CMD_GetDevicePropValue, CONST_PROP_AfModeAtLiveView),
                        false);
                    LiveViewFocusMode.IsEnabled = LiveViewFocusMode.NumericValue != 3;
                    break;

                case CONST_PROP_BatteryLevel:
                {
                    var data = StillImageDevice.ExecuteReadData(CONST_CMD_GetDevicePropValue, CONST_PROP_BatteryLevel);
                    if (data.Data != null && data.Data.Length > 0)
                    {
                        Battery = data.Data[0];
                    }
                }
                break;

                case CONST_PROP_ExposureIndicateStatus:
                {
                    var data =
                        StillImageDevice.ExecuteReadData(CONST_CMD_GetDevicePropValue,
                                                         CONST_PROP_ExposureIndicateStatus);
                    if (data.Data != null && data.Data.Length > 0)
                    {
                        sbyte i =
                            unchecked (
                                (sbyte)data.Data[0]);
                        ExposureStatus = Convert.ToInt32(i);
                    }
                }
                break;

                case CONST_PROP_LiveViewStatus:
                {
                    MTPDataResponse response = ExecuteReadDataEx(CONST_CMD_GetDevicePropValue, CONST_PROP_LiveViewStatus);
                    if (response.Data != null && response.Data.Length > 0)
                    {
                        LiveViewOn = response.Data[0] == 1;
                    }
                    else
                    {
                        LiveViewOn = false;
                    }
                    break;
                }

                case CONST_PROP_LiveViewSelector:
                {
                    MTPDataResponse response = ExecuteReadDataEx(CONST_CMD_GetDevicePropValue, CONST_PROP_LiveViewSelector);
                    if (response.Data != null && response.Data.Length > 0)
                    {
                        LiveViewMovieOn = response.Data[0] == 1;
                    }
                    else
                    {
                        LiveViewMovieOn = false;
                    }
                    break;
                }

                default:
                    // imrovements from: http://digicamcontrol.com/forum/testingbug-reports/buglet-nikonbasecs
                    foreach (PropertyValue <long> advancedProperty in AdvancedProperties.Where(advancedProperty => advancedProperty.Code == prop))
                    {
                        if (advancedProperty.Name == "Image Size")
                        {
                            var val = StillImageDevice.ExecuteReadData(CONST_CMD_GetDevicePropValue,
                                                                       advancedProperty.Code);
                            if (val.Data != null && val.Data.Length > 0)
                            {
                                advancedProperty.SetValue(
                                    Encoding.Unicode.GetString(val.Data, 1, 20), false);
                            }
                        }
                        else
                        {
                            advancedProperty.SetValue(
                                StillImageDevice.ExecuteReadData(CONST_CMD_GetDevicePropValue,
                                                                 advancedProperty.Code), false);
                        }
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                Log.Error("ReadDeviceProperties error", ex);
            }
            //}
        }
コード例 #23
0
        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);
        }
コード例 #24
0
        public override bool Init(DeviceDescriptor deviceDescriptor)
        {
            IsBusy = false;
            //the device not connected
            try
            {
                ConnectToWiaDevice(deviceDescriptor);
            }
            catch (Exception exception)
            {
                Log.Error("Unable to connect camera using wia driver", exception);
                return(false);
            }
            DeviceManager = new DeviceManager();
            DeviceManager.RegisterEvent(Conts.wiaEventItemCreated, deviceDescriptor.WiaId);
            DeviceManager.OnEvent += DeviceManager_OnEvent;

            try
            {
                Device       = deviceDescriptor.WiaDevice;
                DeviceName   = Device.Properties["Description"].get_Value();
                Manufacturer = Device.Properties["Manufacturer"].get_Value();
                SerialNumber = StaticHelper.GetSerial(Device.Properties["PnP ID String"].get_Value());
            }
            catch (Exception ex)
            {
                Log.Debug("Init error", ex);
            }
            IsConnected = true;
            try
            {
                try
                {
                    Property apertureProperty = Device.Properties[Conts.CONST_PROP_F_Number];
                    if (apertureProperty != null)
                    {
                        foreach (var subTypeValue in apertureProperty.SubTypeValues)
                        {
                            double d = (int)subTypeValue;
                            string s = (d / 100).ToString("0.0");
                            FNumber.AddValues(s, (int)d);
                            FNumber.ReloadValues();
                            if ((int)subTypeValue == (int)apertureProperty.get_Value())
                            {
                                FNumber.SetValue((int)d);
                            }
                        }
                    }
                }
                catch (COMException)
                {
                    FNumber.IsEnabled = false;
                }

                try
                {
                    Property isoProperty = Device.Properties[Conts.CONST_PROP_ISO_Number];
                    if (isoProperty != null)
                    {
                        foreach (var subTypeValue in isoProperty.SubTypeValues)
                        {
                            IsoNumber.AddValues(subTypeValue.ToString(), (int)subTypeValue);
                            IsoNumber.ReloadValues();
                            if ((int)subTypeValue == (int)isoProperty.get_Value())
                            {
                                IsoNumber.SetValue((int)subTypeValue);
                            }
                        }
                    }
                }
                catch (COMException)
                {
                    IsoNumber.IsEnabled = false;
                }

                try
                {
                    Property shutterProperty = Device.Properties[Conts.CONST_PROP_Exposure_Time];
                    if (shutterProperty != null)
                    {
                        foreach (int subTypeValue in shutterProperty.SubTypeValues)
                        {
                            if (ShutterTable.ContainsKey((int)subTypeValue))
                            {
                                ShutterSpeed.AddValues(ShutterTable[(int)subTypeValue], (int)subTypeValue);
                            }
                        }
                        ShutterSpeed.ReloadValues();
                        ShutterSpeed.SetValue(shutterProperty.get_Value());
                    }
                }
                catch (COMException)
                {
                    ShutterSpeed.IsEnabled = false;
                }

                try
                {
                    Property wbProperty = Device.Properties[Conts.CONST_PROP_WhiteBalance];
                    if (wbProperty != null)
                    {
                        foreach (var subTypeValue in wbProperty.SubTypeValues)
                        {
                            if (WbTable.ContainsKey((int)subTypeValue))
                            {
                                WhiteBalance.AddValues(WbTable[(int)subTypeValue], (int)subTypeValue);
                            }
                        }
                        WhiteBalance.ReloadValues();
                        WhiteBalance.SetValue(wbProperty.get_Value());
                    }
                }
                catch (COMException)
                {
                    WhiteBalance.IsEnabled = false;
                }

                try
                {
                    Property modeProperty = Device.Properties[Conts.CONST_PROP_ExposureMode];
                    if (modeProperty != null)
                    {
                        foreach (var subTypeValue in modeProperty.SubTypeValues)
                        {
                            if (ExposureModeTable.ContainsKey((int)subTypeValue))
                            {
                                Mode.AddValues(ExposureModeTable[(int)subTypeValue], Convert.ToUInt32(subTypeValue));
                            }
                        }
                        Mode.ReloadValues();
                        Mode.SetValue(Convert.ToUInt32(modeProperty.get_Value()));
                    }
                    Mode.IsEnabled = false;
                }
                catch (COMException)
                {
                    Mode.IsEnabled = false;
                }

                try
                {
                    Property ecProperty = Device.Properties[Conts.CONST_PROP_ExposureCompensation];
                    if (ecProperty != null)
                    {
                        foreach (var subTypeValue in ecProperty.SubTypeValues)
                        {
                            decimal d = (int)subTypeValue;
                            string  s = decimal.Round(d / 1000, 1).ToString();
                            if (d > 0)
                            {
                                s = "+" + s;
                            }
                            ExposureCompensation.AddValues(s, (int)subTypeValue);
                        }
                        ExposureCompensation.ReloadValues();
                        ExposureCompensation.SetValue(ecProperty.get_Value());
                    }
                }
                catch (COMException)
                {
                    ExposureCompensation.IsEnabled = false;
                }

                try
                {
                    Property csProperty = Device.Properties[Conts.CONST_PROP_CompressionSetting];
                    if (csProperty != null)
                    {
                        foreach (var subTypeValue in csProperty.SubTypeValues)
                        {
                            if (CSTable.ContainsKey((int)subTypeValue))
                            {
                                CompressionSetting.AddValues(CSTable[(int)subTypeValue], (int)subTypeValue);
                            }
                        }
                        CompressionSetting.ReloadValues();
                        CompressionSetting.SetValue(csProperty.get_Value());
                    }
                }
                catch (COMException)
                {
                    CompressionSetting.IsEnabled = false;
                }

                try
                {
                    Property emmProperty = Device.Properties[Conts.CONST_PROP_ExposureMeteringMode];
                    if (emmProperty != null)
                    {
                        foreach (var subTypeValue in emmProperty.SubTypeValues)
                        {
                            if (EMMTable.ContainsKey((int)subTypeValue))
                            {
                                ExposureMeteringMode.AddValues(EMMTable[(int)subTypeValue], (int)subTypeValue);
                            }
                        }
                        ExposureMeteringMode.ReloadValues();
                        ExposureMeteringMode.SetValue(emmProperty.get_Value());
                    }
                }
                catch (COMException)
                {
                    CompressionSetting.IsEnabled = false;
                }

                try
                {
                    Property fmProperty = Device.Properties[Conts.CONST_PROP_FocusMode];
                    if (fmProperty != null)
                    {
                        foreach (int subTypeValue in fmProperty.SubTypeValues)
                        {
                            uint subval = Convert.ToUInt16(subTypeValue);
                            if (FMTable.ContainsKey(subval))
                            {
                                FocusMode.AddValues(FMTable[subval], subval);
                            }
                        }
                        FocusMode.ReloadValues();
                        FocusMode.SetValue(Convert.ToUInt16((int)fmProperty.get_Value()));
                    }
                }
                catch (COMException)
                {
                    FocusMode.IsEnabled = false;
                }

                try
                {
                    Battery = Device.Properties[Conts.CONST_PROP_BatteryStatus].get_Value();
                }
                catch (COMException)
                {
                    Battery = 0;
                }
                IsConnected = true;
            }
            catch (Exception exception)
            {
                Log.Error(exception);
                IsConnected = false;
            }
            HaveLiveView = true;
            //Capabilities.Add(CapabilityEnum.LiveView);
            return(true);
        }
コード例 #25
0
        private void GetEvent()
        {
            try
            {
                var jString = Post(CreateJson("getEvent", "1.0", false));
                var json    = Initialize(jString);
                var jResult = json["result"] as JArray;

                if (jResult == null)
                {
                    return;
                }
                var elem = jResult[2];
                if (elem.HasValues)
                {
                    LiveViewImageZoomRatio.SetValue(elem.Value <int>("zoomPositionCurrentBox").ToString(), false);
                }
                elem = jResult[5];
                if (elem.HasValues)
                {
                    foreach (var obj in elem.Children())
                    {
                        foreach (var u in obj["takePictureUrl"].Values <string>())
                        {
                            var url = u;
                            if (url.Contains("?"))
                            {
                                url = url.Split('?')[0];
                            }
                            PhotoCapturedEventArgs args = new PhotoCapturedEventArgs
                            {
                                WiaImageItem = null,
                                EventArgs    = new PortableDeviceEventArgs(),
                                CameraDevice = this,
                                FileName     = url.Replace('/', '\\'),
                                Handle       = url
                            };
                            OnPhotoCapture(this, args);
                        }
                    }
                }

                elem = jResult[18];
                if (elem.HasValues)
                {
                    SetCapability(Mode, new Capability <string>
                    {
                        Current    = elem.Value <string>("currentExposureMode"),
                        Candidates = elem["exposureModeCandidates"].Values <string>().ToList()
                    });
                }

                elem = jResult[27];
                if (elem.HasValues)
                {
                    SetCapability(FNumber, new Capability <string>
                    {
                        Current    = elem.Value <string>("currentFNumber"),
                        Candidates = elem["fNumberCandidates"].Values <string>().ToList()
                    });
                }
                elem = jResult[28];
                if (elem.HasValues)
                {
                    SetCapability(FocusMode, new Capability <string>
                    {
                        Current    = elem.Value <string>("currentFocusMode"),
                        Candidates = elem["focusModeCandidates"].Values <string>().ToList()
                    });
                }

                elem = jResult[29];
                if (elem.HasValues)
                {
                    SetCapability(IsoNumber, new Capability <string>
                    {
                        Current    = elem.Value <string>("currentIsoSpeedRate"),
                        Candidates = elem["isoSpeedRateCandidates"].Values <string>().ToList()
                    });
                }
                elem = jResult[32];
                if (elem.HasValues)
                {
                    SetCapability(ShutterSpeed, new Capability <string>
                    {
                        Current    = elem.Value <string>("currentShutterSpeed"),
                        Candidates = elem["shutterSpeedCandidates"].Values <string>().ToList()
                    });
                }
                elem = jResult[33];
                if (elem.HasValues)
                {
                    WhiteBalance.SetValue(elem.Value <string>("currentWhiteBalanceMode"), false);
                }
                if (jResult.Count > 36) // GetEvent version 1.2
                {
                    elem = jResult[37];
                    if (elem.HasValues)
                    {
                        SetCapability(CompressionSetting, new Capability <string>
                        {
                            Current    = elem.Value <string>("stillQuality"),
                            Candidates = elem["candidate"].Values <string>().ToList()
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Debug("Sony get error ", ex);
            }
            _timer.Start();
        }
コード例 #26
0
ファイル: PlayerManager.cs プロジェクト: talios0/JointGame
    IEnumerator Transition(Vector3 startPos, Vector3 finalPos, Camera startCam, Camera endCam, VolumeProfile startProfile, VolumeProfile endProfile, Players endPlayer)
    {
        transitionVolume.enabled = true;

        // Switch to more efficient method later
        Bloom[] bloom = new Bloom[3];
        ChromaticAberration[]       chromaticAberration       = new ChromaticAberration[3];
        LensDistortion[]            lensDistortion            = new LensDistortion[3];
        FilmGrain[]                 filmGrain                 = new FilmGrain[3];
        ShadowsMidtonesHighlights[] shadowsMidtonesHighlights = new ShadowsMidtonesHighlights[3];
        PaniniProjection[]          paniniProjection          = new PaniniProjection[3];
        WhiteBalance[]              whiteBalance              = new WhiteBalance[3];
        DepthOfField[]              depthOfField              = new DepthOfField[3];
        Vignette[] vignette = new Vignette[3];

        transitionVolume.profile.components.Clear();

        foreach (VolumeComponent c in transitionStartProfile.components.AsReadOnly())
        {
            transitionVolume.profile.components.Add(c);
        }

        transitionVolume.profile.TryGet(out bloom[0]); transitionVolume.profile.TryGet(out chromaticAberration[0]); transitionVolume.profile.TryGet(out lensDistortion[0]); transitionVolume.profile.TryGet(out filmGrain[0]); transitionVolume.profile.TryGet(out shadowsMidtonesHighlights[0]); transitionVolume.profile.TryGet(out paniniProjection[0]); transitionVolume.profile.TryGet(out whiteBalance[0]); transitionVolume.profile.TryGet(out depthOfField[0]); transitionVolume.profile.TryGet(out vignette[0]);
        startProfile.TryGet(out bloom[1]); startProfile.TryGet(out chromaticAberration[1]); startProfile.TryGet(out lensDistortion[1]); startProfile.TryGet(out filmGrain[1]); startProfile.TryGet(out shadowsMidtonesHighlights[1]); startProfile.TryGet(out paniniProjection[1]); startProfile.TryGet(out whiteBalance[1]); startProfile.TryGet(out depthOfField[1]); startProfile.TryGet(out vignette[1]);
        endProfile.TryGet(out bloom[2]); endProfile.TryGet(out chromaticAberration[2]); endProfile.TryGet(out lensDistortion[2]); endProfile.TryGet(out filmGrain[2]); endProfile.TryGet(out shadowsMidtonesHighlights[2]); endProfile.TryGet(out paniniProjection[2]); endProfile.TryGet(out whiteBalance[2]); endProfile.TryGet(out depthOfField[2]); endProfile.TryGet(out vignette[2]);



        for (float i = 0; i < Mathf.PI; i += weightTransferIncrement)
        {
            float weight = Mathf.Cos(i + Mathf.PI) / 2 + 0.5f;
            transitionVolume.weight = Blend(0, 1, weight);
            yield return(new WaitForEndOfFrame());
        }

        for (float i = 0; i < Mathf.PI; i += increment)
        {
            float weight = Mathf.Cos(i + Mathf.PI) / 2 + 0.5f;
            transitionTransform.position        = new Vector3(Blend(startPos.x, finalPos.x, weight), Blend(startPos.y, finalPos.y, weight), Blend(startPos.z, finalPos.z, weight));
            transitionCamera.transform.rotation = Quaternion.Lerp(startCam.transform.rotation, endCam.transform.rotation, i / Mathf.PI);
            transitionCamera.fieldOfView        = Blend(startCam.fieldOfView, endCam.fieldOfView, weight);

            // Bloom
            bloom[0].threshold.value = Blend(bloom[1].threshold.value, bloom[2].threshold.value, weight);
            bloom[0].intensity.value = Blend(bloom[1].intensity.value, bloom[2].intensity.value, weight);
            bloom[0].tint.value      = Color.Lerp(bloom[1].tint.value, bloom[2].tint.value, weight / Mathf.PI);

            // Chromatic Aberration
            chromaticAberration[0].intensity.value = Blend(chromaticAberration[1].intensity.value, chromaticAberration[2].intensity.value, weight);

            // Lens Distortion
            lensDistortion[0].intensity.value = Blend(lensDistortion[1].intensity.value, lensDistortion[2].intensity.value, weight);

            // Film Grain
            filmGrain[0].intensity.value = Blend(filmGrain[1].intensity.value, filmGrain[2].intensity.value, weight);
            filmGrain[0].response.value  = Blend(filmGrain[1].response.value, filmGrain[2].response.value, weight);

            // Shadows Midtones and Highlights
            shadowsMidtonesHighlights[0].shadows.value      = Vector4.Lerp(shadowsMidtonesHighlights[1].shadows.value, shadowsMidtonesHighlights[2].shadows.value, weight / Mathf.PI);
            shadowsMidtonesHighlights[0].midtones.value     = Vector4.Lerp(shadowsMidtonesHighlights[1].midtones.value, shadowsMidtonesHighlights[2].midtones.value, weight / Mathf.PI);
            shadowsMidtonesHighlights[0].highlights.value   = Vector4.Lerp(shadowsMidtonesHighlights[1].highlights.value, shadowsMidtonesHighlights[2].highlights.value, weight / Mathf.PI);
            shadowsMidtonesHighlights[0].shadowsStart.value = Blend(shadowsMidtonesHighlights[1].shadowsStart.value, shadowsMidtonesHighlights[2].shadowsStart.value, weight);
            shadowsMidtonesHighlights[0].shadowsEnd.value   = Blend(shadowsMidtonesHighlights[1].shadowsEnd.value, shadowsMidtonesHighlights[2].shadowsEnd.value, weight);

            // Panini Projection
            paniniProjection[0].distance.value  = Blend(paniniProjection[1].distance.value, paniniProjection[2].distance.value, weight);
            paniniProjection[0].cropToFit.value = Blend(paniniProjection[1].cropToFit.value, paniniProjection[2].cropToFit.value, weight);

            // White Balance
            whiteBalance[0].temperature.value = Blend(whiteBalance[1].temperature.value, whiteBalance[2].temperature.value, weight);
            whiteBalance[0].tint.value        = Blend(whiteBalance[1].tint.value, whiteBalance[2].tint.value, weight);

            // Depth of Field
            depthOfField[0].mode.value           = depthOfField[2].mode.value;
            depthOfField[0].gaussianStart.value  = Blend(depthOfField[1].gaussianStart.value, depthOfField[2].gaussianStart.value, weight);
            depthOfField[0].gaussianEnd.value    = Blend(depthOfField[1].gaussianEnd.value, depthOfField[2].gaussianEnd.value, weight);
            depthOfField[0].focusDistance.value  = Blend(depthOfField[1].focusDistance.value, depthOfField[2].focusDistance.value, weight);
            depthOfField[0].focalLength.value    = Blend(depthOfField[1].focalLength.value, depthOfField[2].focalLength.value, weight);
            depthOfField[0].aperture.value       = Blend(depthOfField[1].aperture.value, depthOfField[2].aperture.value, weight);
            depthOfField[0].bladeCount.value     = (int)Blend(depthOfField[1].bladeCount.value, depthOfField[2].bladeCount.value, weight);
            depthOfField[0].bladeCurvature.value = Blend(depthOfField[1].bladeCurvature.value, depthOfField[2].bladeCurvature.value, weight);
            depthOfField[0].bladeRotation.value  = Blend(depthOfField[1].bladeRotation.value, depthOfField[2].bladeRotation.value, weight);

            // Vignette
            vignette[0].color.value      = Color.Lerp(vignette[1].color.value, vignette[2].color.value, Mathf.PI / weight);
            vignette[0].intensity.value  = Blend(vignette[1].intensity.value, vignette[2].intensity.value, weight);
            vignette[0].smoothness.value = Blend(vignette[1].smoothness.value, vignette[2].smoothness.value, weight);

            yield return(new WaitForEndOfFrame());
        }

        for (float i = 0; i < Mathf.PI; i += weightTransferIncrement)
        {
            float weight = Mathf.Cos(i + Mathf.PI) / 2 + 0.5f;
            transitionVolume.weight = Blend(1, 0, weight);
            yield return(new WaitForEndOfFrame());
        }

        EndTransition();
        yield break;
    }
コード例 #27
0
ファイル: Config.cs プロジェクト: zakirIndia/simulator
        public override int GetHashCode()
        {
            int hash = 1;

            if (CameraDev.Length != 0)
            {
                hash ^= CameraDev.GetHashCode();
            }
            if (FrameId.Length != 0)
            {
                hash ^= FrameId.GetHashCode();
            }
            if (PixelFormat.Length != 0)
            {
                hash ^= PixelFormat.GetHashCode();
            }
            if (IoMethod != 0)
            {
                hash ^= IoMethod.GetHashCode();
            }
            if (Width != 0)
            {
                hash ^= Width.GetHashCode();
            }
            if (Height != 0)
            {
                hash ^= Height.GetHashCode();
            }
            if (FrameRate != 0)
            {
                hash ^= FrameRate.GetHashCode();
            }
            if (Monochrome != false)
            {
                hash ^= Monochrome.GetHashCode();
            }
            if (Brightness != 0)
            {
                hash ^= Brightness.GetHashCode();
            }
            if (Contrast != 0)
            {
                hash ^= Contrast.GetHashCode();
            }
            if (Saturation != 0)
            {
                hash ^= Saturation.GetHashCode();
            }
            if (Sharpness != 0)
            {
                hash ^= Sharpness.GetHashCode();
            }
            if (Gain != 0)
            {
                hash ^= Gain.GetHashCode();
            }
            if (AutoFocus != false)
            {
                hash ^= AutoFocus.GetHashCode();
            }
            if (Focus != 0)
            {
                hash ^= Focus.GetHashCode();
            }
            if (AutoExposure != false)
            {
                hash ^= AutoExposure.GetHashCode();
            }
            if (Exposure != 0)
            {
                hash ^= Exposure.GetHashCode();
            }
            if (AutoWhiteBalance != false)
            {
                hash ^= AutoWhiteBalance.GetHashCode();
            }
            if (WhiteBalance != 0)
            {
                hash ^= WhiteBalance.GetHashCode();
            }
            if (BytesPerPixel != 0)
            {
                hash ^= BytesPerPixel.GetHashCode();
            }
            if (TriggerInternal != 0)
            {
                hash ^= TriggerInternal.GetHashCode();
            }
            if (TriggerFps != 0)
            {
                hash ^= TriggerFps.GetHashCode();
            }
            if (ChannelName.Length != 0)
            {
                hash ^= ChannelName.GetHashCode();
            }
            if (DeviceWaitMs != 0)
            {
                hash ^= DeviceWaitMs.GetHashCode();
            }
            if (SpinRate != 0)
            {
                hash ^= SpinRate.GetHashCode();
            }
            if (OutputType != 0)
            {
                hash ^= OutputType.GetHashCode();
            }
            if (compressConf_ != null)
            {
                hash ^= CompressConf.GetHashCode();
            }
            return(hash);
        }