From 7332a9a35415c9ca410c6a1b5ef0fb294a8dd289 Mon Sep 17 00:00:00 2001 From: builder Date: Tue, 11 Jun 2024 10:48:51 +0000 Subject: [PATCH] Samples: Minor updates This does some minor updates to the Halcon samples: * `SurfaceMatchingCreateModel`: Switch to Stripe engine to support Zivid 2 * `SurfaceMatchingCreateModelFromFile`: Remove outdated information * `SurfaceMatchingFindModel`: Switch to Stripe engine to support Zivid 2 * `Capture`: Remove hardcoded capture settings and use defaults instead * `CaptureHDRCompleteSettings`: Increase brightness and add resampling * `CaptureSavePLY`: Remove hardcoded capture settings and use defaults instead * `read_zivid_json_params`: Allow reading JSON that doesn't contain every available capture setting --- .../SurfaceMatchingCreateModel.hdev | 2 +- .../SurfaceMatchingCreateModelFromFile.hdev | 4 +- .../SurfaceMatchingFindModel.hdev | 2 +- source/Camera/Basic/Capture.hdev | 10 - .../Basic/CaptureHDRCompleteSettings.hdev | 9 +- source/Camera/Basic/CaptureSavePLY.hdev | 6 - source/Procedures/read_zivid_json_params.hdvp | 324 ++++++++++++------ 7 files changed, 219 insertions(+), 138 deletions(-) diff --git a/source/Applications/Advanced/ObjectMatching/SurfaceMatchingCreateModel.hdev b/source/Applications/Advanced/ObjectMatching/SurfaceMatchingCreateModel.hdev index 984b5fb..346588b 100644 --- a/source/Applications/Advanced/ObjectMatching/SurfaceMatchingCreateModel.hdev +++ b/source/Applications/Advanced/ObjectMatching/SurfaceMatchingCreateModel.hdev @@ -38,7 +38,7 @@ set_framegrabber_param (AcqHandle, 'ResetAcquisitions', 1) * Setting global settings - set_framegrabber_param (AcqHandle, 'Engine', 'omni') + set_framegrabber_param (AcqHandle, 'Engine', 'stripe') set_framegrabber_param (AcqHandle, 'SamplingColor', 'rgb') set_framegrabber_param (AcqHandle, 'SamplingPixel', 'blueSubsample2x2') set_framegrabber_param (AcqHandle, 'ProcessingFiltersSmoothingGaussianEnabled', 1) diff --git a/source/Applications/Advanced/ObjectMatching/SurfaceMatchingCreateModelFromFile.hdev b/source/Applications/Advanced/ObjectMatching/SurfaceMatchingCreateModelFromFile.hdev index 54c4d8d..a46209e 100644 --- a/source/Applications/Advanced/ObjectMatching/SurfaceMatchingCreateModelFromFile.hdev +++ b/source/Applications/Advanced/ObjectMatching/SurfaceMatchingCreateModelFromFile.hdev @@ -33,9 +33,9 @@ import './../../../Procedures' get_zivid_sample_data_dir(ZividDataDir) ScenePath := ZividDataDir + '/ObjectMatching/' + SurfaceModelFile + '/Im1.ply' - * Specify the camera that point cloud was taken with; options are: 'Zivid 2' and 'Zivid 2+'. + * Specify the camera that point cloud was taken with. Camera := 'Zivid 2+' - * Specify SamplingPixel that point cloud was taken with; options are: 'all', 'blueSubsample2x2', and 'redSubsample2x2' + * Specify SamplingPixel that point cloud was taken with. SamplingPixel := 'blueSubsample2x2' get_zivid_camera_width (Camera, SamplingPixel, MapWidth) read_object_model_3d (ScenePath, 'm', ['xyz_map_width'], MapWidth, ObjectModel3D_Scene, Status) diff --git a/source/Applications/Advanced/ObjectMatching/SurfaceMatchingFindModel.hdev b/source/Applications/Advanced/ObjectMatching/SurfaceMatchingFindModel.hdev index ebb77e0..3c9bd8e 100644 --- a/source/Applications/Advanced/ObjectMatching/SurfaceMatchingFindModel.hdev +++ b/source/Applications/Advanced/ObjectMatching/SurfaceMatchingFindModel.hdev @@ -55,7 +55,7 @@ set_framegrabber_param (AcqHandle, 'ResetAcquisitions', 1) * Setting global settings - set_framegrabber_param (AcqHandle, 'Engine', 'omni') + set_framegrabber_param (AcqHandle, 'Engine', 'stripe') set_framegrabber_param (AcqHandle, 'SamplingColor', 'rgb') set_framegrabber_param (AcqHandle, 'SamplingPixel', 'blueSubsample2x2') set_framegrabber_param (AcqHandle, 'ProcessingFiltersSmoothingGaussianEnabled', 1) diff --git a/source/Camera/Basic/Capture.hdev b/source/Camera/Basic/Capture.hdev index e8a29d0..1dd1fc2 100644 --- a/source/Camera/Basic/Capture.hdev +++ b/source/Camera/Basic/Capture.hdev @@ -32,16 +32,6 @@ * Switching to single Frame mode set_framegrabber_param (AcqHandle, 'AcquisitionMode', 'SingleFrame') - * Configuring settings - set_framegrabber_param (AcqHandle, 'Aperture', 5.66) - set_framegrabber_param (AcqHandle, 'ExposureTime', 6500) - set_framegrabber_param (AcqHandle, 'Gain', 1) - set_framegrabber_param (AcqHandle, 'Brightness', 1) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersOutlierRemovalEnabled', 1) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersOutlierRemovalThreshold', 5) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersSmoothingGaussianEnabled', 1) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersSmoothingGaussianSigma', 1.5) - * Capturing frame grab_data (Image, Region, Contours, AcqHandle, ObjectModel3D) diff --git a/source/Camera/Basic/CaptureHDRCompleteSettings.hdev b/source/Camera/Basic/CaptureHDRCompleteSettings.hdev index 3360804..e6cd99c 100644 --- a/source/Camera/Basic/CaptureHDRCompleteSettings.hdev +++ b/source/Camera/Basic/CaptureHDRCompleteSettings.hdev @@ -43,7 +43,7 @@ * Configuring HDR settings for the first image set_framegrabber_param (AcqHandle, 'Aperture', 8) set_framegrabber_param (AcqHandle, 'ExposureTime', 10000) - set_framegrabber_param (AcqHandle, 'Brightness', 1) + set_framegrabber_param (AcqHandle, 'Brightness', 1.8) set_framegrabber_param (AcqHandle, 'Gain', 1) set_framegrabber_param (AcqHandle, 'AddAcquisition', 1) @@ -51,7 +51,7 @@ * Configuring HDR settings for the second image set_framegrabber_param (AcqHandle, 'Aperture', 4.00) set_framegrabber_param (AcqHandle, 'ExposureTime', 10000) - set_framegrabber_param (AcqHandle, 'Brightness', 1) + set_framegrabber_param (AcqHandle, 'Brightness', 1.8) set_framegrabber_param (AcqHandle, 'Gain', 1) set_framegrabber_param (AcqHandle, 'AddAcquisition', 1) @@ -59,7 +59,7 @@ * Configuring HDR settings for the third image set_framegrabber_param (AcqHandle, 'Aperture', 4.00) set_framegrabber_param (AcqHandle, 'ExposureTime', 40000) - set_framegrabber_param (AcqHandle, 'Brightness', 1) + set_framegrabber_param (AcqHandle, 'Brightness', 1.8) set_framegrabber_param (AcqHandle, 'Gain', 1) set_framegrabber_param (AcqHandle, 'AddAcquisition', 1) @@ -67,7 +67,7 @@ * Setting global settings set_framegrabber_param (AcqHandle, 'Engine', 'phase') set_framegrabber_param (AcqHandle, 'SamplingColor', 'rgb') - set_framegrabber_param (AcqHandle, 'SamplingPixel', 'all') + set_framegrabber_param (AcqHandle, 'SamplingPixel', 'blueSubsample2x2') set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxEnabled', 1) set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxPointOX', 1000) set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxPointOY', 1000) @@ -102,6 +102,7 @@ set_framegrabber_param (AcqHandle, 'ProcessingFiltersHoleRepairEnabled', 1) set_framegrabber_param (AcqHandle, 'ProcessingFiltersHoleRepairHoleSize', 0.2) set_framegrabber_param (AcqHandle, 'ProcessingFiltersHoleRepairStrictness', 1) + set_framegrabber_param (AcqHandle, 'ProcessingResamplingMode', 'upsample2x2') set_framegrabber_param (AcqHandle, 'ProcessingColorBalanceBlue', 1) set_framegrabber_param (AcqHandle, 'ProcessingColorBalanceGreen', 1) set_framegrabber_param (AcqHandle, 'ProcessingColorBalanceRed', 1) diff --git a/source/Camera/Basic/CaptureSavePLY.hdev b/source/Camera/Basic/CaptureSavePLY.hdev index 71aab96..af6d7d9 100644 --- a/source/Camera/Basic/CaptureSavePLY.hdev +++ b/source/Camera/Basic/CaptureSavePLY.hdev @@ -31,12 +31,6 @@ * Switching to single acquisition mode set_framegrabber_param (AcqHandle, 'AcquisitionMode', 'SingleFrame') - * Configuring settings - set_framegrabber_param (AcqHandle, 'Aperture', 5.66) - set_framegrabber_param (AcqHandle, 'ExposureTime', 6500) - set_framegrabber_param (AcqHandle, 'Gain', 1) - set_framegrabber_param (AcqHandle, 'Brightness', 1) - * Capturing frame grab_data (Image, Region, Contours, AcqHandle, ObjectModel3D) diff --git a/source/Procedures/read_zivid_json_params.hdvp b/source/Procedures/read_zivid_json_params.hdvp index 503c5c6..e1fd37f 100644 --- a/source/Procedures/read_zivid_json_params.hdvp +++ b/source/Procedures/read_zivid_json_params.hdvp @@ -12,6 +12,8 @@ get_dict_tuple (Settings, 'Acquisitions', Acquisitions) get_dict_param (Acquisitions, 'keys', [], AllKeys) + NonExistingKeys := [] + * Single Capture or HDR if (|AllKeys|==1) set_framegrabber_param (AcqHandle, 'AcquisitionMode', 'SingleFrame') @@ -35,148 +37,242 @@ endfor * Engine - get_dict_tuple (Settings, 'Engine', Engine) - set_framegrabber_param (AcqHandle, 'Engine', Engine) + get_dict_param(Settings, 'key_exists', 'Engine', KeyExists) + if (KeyExists) + get_dict_tuple (Settings, 'Engine', Engine) + set_framegrabber_param (AcqHandle, 'Engine', Engine) + else + NonExistingKeys := [NonExistingKeys, 'Engine'] + endif * Sampling - get_dict_tuple (Settings, 'Sampling', Sampling) - get_dict_tuple (Sampling, 'Color', SamplingColor) - get_dict_tuple (Sampling, 'Pixel', SamplingPixel) - set_framegrabber_param (AcqHandle, 'SamplingColor', SamplingColor) - set_framegrabber_param (AcqHandle, 'SamplingPixel', SamplingPixel) + get_dict_param(Settings, 'key_exists', 'Sampling', KeyExists) + if (KeyExists) + get_dict_tuple (Settings, 'Sampling', Sampling) + get_dict_tuple (Sampling, 'Color', SamplingColor) + get_dict_tuple (Sampling, 'Pixel', SamplingPixel) + set_framegrabber_param (AcqHandle, 'SamplingColor', SamplingColor) + set_framegrabber_param (AcqHandle, 'SamplingPixel', SamplingPixel) + else + NonExistingKeys := [NonExistingKeys, 'Sampling'] + endif * RegionOfInterest - get_dict_tuple (Settings, 'RegionOfInterest', RegionOfInterest) + get_dict_param(Settings, 'key_exists', 'RegionOfInterest', KeyExists) + if (KeyExists) + get_dict_tuple (Settings, 'RegionOfInterest', RegionOfInterest) + else + NonExistingKeys := [NonExistingKeys, 'RegionOfInterest'] + endif * Box - get_dict_tuple (RegionOfInterest, 'Box', Box) - get_dict_tuple (Box, 'Enabled', Enabled) - set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxEnabled', Enabled) - get_dict_tuple (Box, 'Extents', Extents) - get_dict_tuple (Extents, 0, ExtentsMin) - set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxExtentsMin', ExtentsMin) - get_dict_tuple (Extents, 1, ExtentsMax) - set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxExtentsMax', ExtentsMax) - get_dict_tuple (Box, 'PointO', PointO) - get_dict_tuple (PointO, 0, PointOX) - set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxPointOX', PointOX) - get_dict_tuple (PointO, 1, PointOY) - set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxPointOY', PointOY) - get_dict_tuple (PointO, 2, PointOZ) - set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxPointOZ', PointOZ) - get_dict_tuple (Box, 'PointA', PointA) - get_dict_tuple (PointA, 0, PointAX) - set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxPointAX', PointAX) - get_dict_tuple (PointA, 1, PointAY) - set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxPointAY', PointAY) - get_dict_tuple (PointA, 2, PointAZ) - set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxPointAZ', PointAZ) - get_dict_tuple (Box, 'PointB', PointB) - get_dict_tuple (PointB, 0, PointBX) - set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxPointBX', PointBX) - get_dict_tuple (PointB, 1, PointBY) - set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxPointBY', PointBY) - get_dict_tuple (PointB, 2, PointBZ) - set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxPointBZ', PointBZ) + get_dict_param(RegionOfInterest, 'key_exists', 'Box', KeyExists) + if (KeyExists) + get_dict_tuple (RegionOfInterest, 'Box', Box) + get_dict_tuple (Box, 'Enabled', Enabled) + set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxEnabled', Enabled) + get_dict_tuple (Box, 'Extents', Extents) + get_dict_tuple (Extents, 0, ExtentsMin) + set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxExtentsMin', ExtentsMin) + get_dict_tuple (Extents, 1, ExtentsMax) + set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxExtentsMax', ExtentsMax) + get_dict_tuple (Box, 'PointO', PointO) + get_dict_tuple (PointO, 0, PointOX) + set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxPointOX', PointOX) + get_dict_tuple (PointO, 1, PointOY) + set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxPointOY', PointOY) + get_dict_tuple (PointO, 2, PointOZ) + set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxPointOZ', PointOZ) + get_dict_tuple (Box, 'PointA', PointA) + get_dict_tuple (PointA, 0, PointAX) + set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxPointAX', PointAX) + get_dict_tuple (PointA, 1, PointAY) + set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxPointAY', PointAY) + get_dict_tuple (PointA, 2, PointAZ) + set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxPointAZ', PointAZ) + get_dict_tuple (Box, 'PointB', PointB) + get_dict_tuple (PointB, 0, PointBX) + set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxPointBX', PointBX) + get_dict_tuple (PointB, 1, PointBY) + set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxPointBY', PointBY) + get_dict_tuple (PointB, 2, PointBZ) + set_framegrabber_param (AcqHandle, 'RegionOfInterestBoxPointBZ', PointBZ) + else + NonExistingKeys := [NonExistingKeys, 'RegionOfInterestBox'] + endif * Depth - get_dict_tuple (RegionOfInterest, 'Depth', Depth) - get_dict_tuple (Depth, 'Enabled', Enabled) - set_framegrabber_param (AcqHandle, 'RegionOfInterestDepthEnabled', 1) - get_dict_tuple (Depth, 'Range', Range) - get_dict_tuple (Range, 0, RangeMin) - set_framegrabber_param (AcqHandle, 'RegionOfInterestDepthRangeMin', RangeMin) - get_dict_tuple (Range, 1, RangeMax) - set_framegrabber_param (AcqHandle, 'RegionOfInterestDepthRangeMax', RangeMax) + get_dict_param(RegionOfInterest, 'key_exists', 'Depth', KeyExists) + if (KeyExists) + get_dict_tuple (RegionOfInterest, 'Depth', Depth) + get_dict_tuple (Depth, 'Enabled', Enabled) + set_framegrabber_param (AcqHandle, 'RegionOfInterestDepthEnabled', 1) + get_dict_tuple (Depth, 'Range', Range) + get_dict_tuple (Range, 0, RangeMin) + set_framegrabber_param (AcqHandle, 'RegionOfInterestDepthRangeMin', RangeMin) + get_dict_tuple (Range, 1, RangeMax) + set_framegrabber_param (AcqHandle, 'RegionOfInterestDepthRangeMax', RangeMax) + else + NonExistingKeys := [NonExistingKeys, 'RegionOfInterestDepth'] + endif * Processing Settings get_dict_tuple (Settings, 'Processing', Processing) get_dict_tuple (Processing, 'Filters', Filters) * Cluster Filter - get_dict_tuple (Filters, 'Cluster', Cluster) - get_dict_tuple (Cluster, 'Removal', Removal) - get_dict_tuple (Removal, 'Enabled', Enabled) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersClusterRemovalEnabled', Enabled) - get_dict_tuple (Removal, 'MaxNeighborDistance', MaxNeighborDistance) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersClusterRemovalMaxNeighborDistance', MaxNeighborDistance) - get_dict_tuple (Removal, 'MinArea', MinArea) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersClusterRemovalMinArea', MinArea) + get_dict_param(Filters, 'key_exists', 'Cluster', KeyExists) + if (KeyExists) + get_dict_tuple (Filters, 'Cluster', Cluster) + get_dict_tuple (Cluster, 'Removal', Removal) + get_dict_tuple (Removal, 'Enabled', Enabled) + set_framegrabber_param (AcqHandle, 'ProcessingFiltersClusterRemovalEnabled', Enabled) + get_dict_tuple (Removal, 'MaxNeighborDistance', MaxNeighborDistance) + set_framegrabber_param (AcqHandle, 'ProcessingFiltersClusterRemovalMaxNeighborDistance', MaxNeighborDistance) + get_dict_tuple (Removal, 'MinArea', MinArea) + set_framegrabber_param (AcqHandle, 'ProcessingFiltersClusterRemovalMinArea', MinArea) + else + NonExistingKeys := [NonExistingKeys, 'ClusterFilter'] + endif * Noise Filter - get_dict_tuple (Filters, 'Noise', Noise) - get_dict_tuple (Noise, 'Removal', Removal) - get_dict_tuple (Removal, 'Enabled', Enabled) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersNoiseRemovalEnabled', Enabled) - get_dict_tuple (Removal, 'Threshold', Threshold) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersNoiseRemovalThreshold', Threshold) - get_dict_tuple (Noise, 'Suppression', Suppression) - get_dict_tuple (Suppression, 'Enabled', Enabled) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersNoiseSuppressionEnabled', Enabled) - get_dict_tuple (Noise, 'Repair', Repair) - get_dict_tuple (Repair, 'Enabled', Enabled) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersNoiseRepairEnabled', Enabled) + get_dict_param(Filters, 'key_exists', 'Noise', KeyExists) + if (KeyExists) + get_dict_tuple (Filters, 'Noise', Noise) + get_dict_tuple (Noise, 'Removal', Removal) + get_dict_tuple (Removal, 'Enabled', Enabled) + set_framegrabber_param (AcqHandle, 'ProcessingFiltersNoiseRemovalEnabled', Enabled) + get_dict_tuple (Removal, 'Threshold', Threshold) + set_framegrabber_param (AcqHandle, 'ProcessingFiltersNoiseRemovalThreshold', Threshold) + get_dict_tuple (Noise, 'Suppression', Suppression) + get_dict_tuple (Suppression, 'Enabled', Enabled) + set_framegrabber_param (AcqHandle, 'ProcessingFiltersNoiseSuppressionEnabled', Enabled) + get_dict_tuple (Noise, 'Repair', Repair) + get_dict_tuple (Repair, 'Enabled', Enabled) + set_framegrabber_param (AcqHandle, 'ProcessingFiltersNoiseRepairEnabled', Enabled) + else + NonExistingKeys := [NonExistingKeys, 'NoiseFilter'] + endif * Outlier Filter - get_dict_tuple (Filters, 'Outlier', Outlier) - get_dict_tuple (Outlier, 'Removal', Removal) - get_dict_tuple (Removal, 'Enabled', Enabled) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersOutlierRemovalEnabled', Enabled) - get_dict_tuple (Removal, 'Threshold', Threshold) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersOutlierRemovalThreshold', Threshold) + get_dict_param(Filters, 'key_exists', 'Outlier', KeyExists) + if (KeyExists) + get_dict_tuple (Filters, 'Outlier', Outlier) + get_dict_tuple (Outlier, 'Removal', Removal) + get_dict_tuple (Removal, 'Enabled', Enabled) + set_framegrabber_param (AcqHandle, 'ProcessingFiltersOutlierRemovalEnabled', Enabled) + get_dict_tuple (Removal, 'Threshold', Threshold) + set_framegrabber_param (AcqHandle, 'ProcessingFiltersOutlierRemovalThreshold', Threshold) + else + NonExistingKeys := [NonExistingKeys, 'OutlierFilter'] + endif * Reflection Filter - get_dict_tuple (Filters, 'Reflection', Reflection) - get_dict_tuple (Reflection, 'Removal', Removal) - get_dict_tuple (Removal, 'Enabled', Enabled) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersReflectionRemovalEnabled', Enabled) - get_dict_tuple (Removal, 'Mode', Mode) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersReflectionRemovalMode', Mode) + get_dict_param(Filters, 'key_exists', 'Reflection', KeyExists) + if (KeyExists) + get_dict_tuple (Filters, 'Reflection', Reflection) + get_dict_tuple (Reflection, 'Removal', Removal) + get_dict_tuple (Removal, 'Enabled', Enabled) + set_framegrabber_param (AcqHandle, 'ProcessingFiltersReflectionRemovalEnabled', Enabled) + get_dict_tuple (Removal, 'Mode', Mode) + set_framegrabber_param (AcqHandle, 'ProcessingFiltersReflectionRemovalMode', Mode) + else + NonExistingKeys := [NonExistingKeys, 'ReflectionFilter'] + endif * Smoothing Filter - get_dict_tuple (Filters, 'Smoothing', Smoothing) - get_dict_tuple (Smoothing, 'Gaussian', Gaussian) - get_dict_tuple (Gaussian, 'Enabled', Enabled) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersSmoothingGaussianEnabled', Enabled) - get_dict_tuple (Gaussian, 'Sigma', Sigma) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersSmoothingGaussianSigma', Sigma) + get_dict_param(Filters, 'key_exists', 'Smoothing', KeyExists) + if (KeyExists) + get_dict_tuple (Filters, 'Smoothing', Smoothing) + get_dict_tuple (Smoothing, 'Gaussian', Gaussian) + get_dict_tuple (Gaussian, 'Enabled', Enabled) + set_framegrabber_param (AcqHandle, 'ProcessingFiltersSmoothingGaussianEnabled', Enabled) + get_dict_tuple (Gaussian, 'Sigma', Sigma) + set_framegrabber_param (AcqHandle, 'ProcessingFiltersSmoothingGaussianSigma', Sigma) + else + NonExistingKeys := [NonExistingKeys, 'SmoothingFilter'] + endif * ContrastDistortion Filter - get_dict_tuple (Filters, 'Experimental', Experimental) - get_dict_tuple (Experimental, 'ContrastDistortion', ContrastDistortion) - get_dict_tuple (ContrastDistortion, 'Correction', Correction) - get_dict_tuple (Correction, 'Enabled', Enabled) - get_dict_tuple (Correction, 'Strength', Strength) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersExperimentalContrastDistortionCorrectionEnabled', Enabled) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersExperimentalContrastDistortionCorrectionStrength', Strength) - get_dict_tuple (ContrastDistortion, 'Removal', Removal) - get_dict_tuple (Removal, 'Enabled', Enabled) - get_dict_tuple (Removal, 'Threshold', Threshold) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersExperimentalContrastDistortionRemovalEnabled', Enabled) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersExperimentalContrastDistortionRemovalThreshold', Threshold) + get_dict_param(Filters, 'key_exists', 'Experimental', KeyExists) + if (KeyExists) + get_dict_tuple (Filters, 'Experimental', Experimental) + get_dict_param(Experimental, 'key_exists', 'ContrastDistortion', KeyExists) + if (KeyExists) + get_dict_tuple (Experimental, 'ContrastDistortion', ContrastDistortion) + get_dict_tuple (ContrastDistortion, 'Correction', Correction) + get_dict_tuple (Correction, 'Enabled', Enabled) + get_dict_tuple (Correction, 'Strength', Strength) + set_framegrabber_param (AcqHandle, 'ProcessingFiltersExperimentalContrastDistortionCorrectionEnabled', Enabled) + set_framegrabber_param (AcqHandle, 'ProcessingFiltersExperimentalContrastDistortionCorrectionStrength', Strength) + get_dict_tuple (ContrastDistortion, 'Removal', Removal) + get_dict_tuple (Removal, 'Enabled', Enabled) + get_dict_tuple (Removal, 'Threshold', Threshold) + set_framegrabber_param (AcqHandle, 'ProcessingFiltersExperimentalContrastDistortionRemovalEnabled', Enabled) + set_framegrabber_param (AcqHandle, 'ProcessingFiltersExperimentalContrastDistortionRemovalThreshold', Threshold) + else + NonExistingKeys := [NonExistingKeys, 'ContrastDistortionFilter'] + endif + else + NonExistingKeys := [NonExistingKeys, 'Experimental'] + endif * Hole Repair Filter - get_dict_tuple (Filters, 'Hole', Hole) - get_dict_tuple (Hole, 'Repair', Repair) - get_dict_tuple (Repair, 'Enabled', Enabled) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersHoleRepairEnabled', Enabled) - get_dict_tuple (Repair, 'HoleSize', HoleSize) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersHoleRepairHoleSize', HoleSize) - get_dict_tuple (Repair, 'Strictness', Strictness) - set_framegrabber_param (AcqHandle, 'ProcessingFiltersHoleRepairStrictness', Strictness) + get_dict_param(Filters, 'key_exists', 'Hole', KeyExists) + if (KeyExists) + get_dict_tuple (Filters, 'Hole', Hole) + get_dict_tuple (Hole, 'Repair', Repair) + get_dict_tuple (Repair, 'Enabled', Enabled) + set_framegrabber_param (AcqHandle, 'ProcessingFiltersHoleRepairEnabled', Enabled) + get_dict_tuple (Repair, 'HoleSize', HoleSize) + set_framegrabber_param (AcqHandle, 'ProcessingFiltersHoleRepairHoleSize', HoleSize) + get_dict_tuple (Repair, 'Strictness', Strictness) + set_framegrabber_param (AcqHandle, 'ProcessingFiltersHoleRepairStrictness', Strictness) + else + NonExistingKeys := [NonExistingKeys, 'HoleRepairFilter'] + endif + + * Resampling + get_dict_param(Processing, 'key_exists', 'Resampling', KeyExists) + if (KeyExists) + get_dict_tuple(Processing, 'Resampling', Resampling) + get_dict_tuple(Resampling, 'Mode', Mode) + set_framegrabber_param(AcqHandle, 'ProcessingResamplingMode', Mode) + else + NonExistingKeys := [NonExistingKeys, 'Resampling'] + endif * Color Settings - get_dict_tuple (Processing, 'Color', Color) - get_dict_tuple (Color, 'Balance', Balance) - get_dict_tuple (Balance, 'Blue', Blue) - get_dict_tuple (Balance, 'Green', Green) - get_dict_tuple (Balance, 'Red', Red) - set_framegrabber_param (AcqHandle, 'ProcessingColorBalanceBlue', Blue) - set_framegrabber_param (AcqHandle, 'ProcessingColorBalanceGreen', Green) - set_framegrabber_param (AcqHandle, 'ProcessingColorBalanceRed', Red) - get_dict_tuple (Color, 'Experimental', Experimental) - get_dict_tuple (Experimental, 'Mode', Mode) - set_framegrabber_param (AcqHandle, 'ProcessingColorExperimentalMode', Mode) + get_dict_param(Processing, 'key_exists', 'Color', KeyExists) + if (KeyExists) + get_dict_tuple (Processing, 'Color', Color) + get_dict_tuple (Color, 'Balance', Balance) + get_dict_tuple (Balance, 'Blue', Blue) + get_dict_tuple (Balance, 'Green', Green) + get_dict_tuple (Balance, 'Red', Red) + set_framegrabber_param (AcqHandle, 'ProcessingColorBalanceBlue', Blue) + set_framegrabber_param (AcqHandle, 'ProcessingColorBalanceGreen', Green) + set_framegrabber_param (AcqHandle, 'ProcessingColorBalanceRed', Red) + get_dict_tuple (Color, 'Experimental', Experimental) + get_dict_tuple (Experimental, 'Mode', Mode) + set_framegrabber_param (AcqHandle, 'ProcessingColorExperimentalMode', Mode) + else + NonExistingKeys := [NonExistingKeys, 'Color'] + endif + + tuple_length(NonExistingKeys, NumberOfNonExistingKeys) + if (NumberOfNonExistingKeys > 0) + dev_open_window (0, 0, 512, 512, 'black', WindowHandle) + DisplayText := 'Could not find the following capture settings:\n' + for Index := 0 to |NumberOfNonExistingKeys| - 1 by 1 + tuple_select(NonExistingKeys, Index, NonExistingKey) + DisplayText := DisplayText + '\t\t- ' + NonExistingKey + '\n' + endfor + DisplayText := DisplayText + 'Using default settings instead.' + dev_disp_text(DisplayText, 'window', 0, 0, 'red', ['box'], ['false']) + wait_seconds(5) + dev_close_window() + endif return ()