The Scaling feature introduces a virtual sensor plane that can be scaled using the BslScalingFactor parameter. The BslScaledSensorWidth and BslScaledSensorHeight parameters indicate the current size of the virtual sensor.
A lower scaling factor increases the size of the virtual sensor.
A higher scaling factor decreases the size of the virtual sensor.
Example: Assume your camera sensor has a resolution of 2592 x 1944 pixels. If you set the BslScalingFactor parameter to 0.5, the virtual sensor will be twice the size of the physical sensor, i.e., 5184 x 3888 pixels.
To zoom in, set the BslScalingFactor parameter to a value lower than 1.0.
This increases the size of the virtual sensor while the image ROI size and position remain the same.
Example: In the example below, the BslScalingFactor parameter is set to 0.5. The size of the virtual sensor halves while the image ROI size and position remain the same.
As a result, image content will appear zoomed in and shifted to the upper left.
To zoom out, set the BslScalingFactor parameter to a value higher than 1.0.
This decreases the size of the virtual sensor while the image ROI size and position remain the same.
Info
The virtual sensor can't be smaller than the image ROI.
Therefore, you may have to reduce the height and width of the image ROI before you can zoom out.
Example: In the example below, the BslScalingFactor parameter is set to 2.0. The size of the virtual sensor doubles while the image ROI size and position remain the same.
As a result, image content will appear zoomed out and shifted to the lower right.
// Set scaling to 0.5, i.e., set the size of the// virtual sensor to 2x the size of the physical sensorcamera.BslScalingFactor.SetValue(0.5);// Get the size of the virtual sensordoublescaledWidth=camera.BslScaledSensorWidth.GetValue();doublescaledHeight=camera.BslScaledSensorHeight.GetValue();// Disable scalingcamera.BslScalingFactor.SetValue(1.0);
INodeMap&nodemap=camera.GetNodeMap();// Set scaling to 0.5, i.e., set the size of the// virtual sensor to 2x the size of the physical sensorCFloatParameter(nodemap,"BslScalingFactor").SetValue(0.5);// Get the size of the virtual sensordoublescaledWidth=CFloatParameter(nodemap,"BslScaledSensorWidth").GetValue();doublescaledHeight=CFloatParameter(nodemap,"BslScaledSensorHeight").GetValue();// Disable scalingCFloatParameter(nodemap,"BslScalingFactor").SetValue(1.0);
// Set scaling to 0.5, i.e., set the size of the// virtual sensor to 2x the size of the physical sensorcamera.Parameters[PLCamera.BslScalingFactor].SetValue(0.5);// Get the size of the virtual sensordoublescaledWidth=camera.Parameters[PLCamera.BslScaledSensorWidth].GetValue();doublescaledHeight=camera.Parameters[PLCamera.BslScaledSensorHeight].GetValue();// Disable scalingcamera.Parameters[PLCamera.BslScalingFactor].SetValue(1.0);
/* Macro to check for errors */#define CHECK(errc) if (GENAPI_E_OK != errc) printErrorAndExit(errc)GENAPIC_RESULTerrRes=GENAPI_E_OK;/* Return value of pylon methods */doublescaledWidth=0;doublescaledHeight=0;/* Set scaling to 0.5, i.e., set the size of the *//* virtual sensor to 2x the size of the physical sensor */errRes=PylonDeviceSetFloatFeature(hdev,"BslScalingFactor",0.5);CHECK(errRes);/* Get the size of the virtual sensor */errRes=PylonDeviceGetFloatFeature(hdev,"BslScaledSensorWidth",&scaledWidth);CHECK(errRes);errRes=PylonDeviceGetFloatFeature(hdev,"BslScaledSensorHeight",&scaledHeight);CHECK(errRes);/* Disable scaling */errRes=PylonDeviceSetFloatFeature(hdev,"BslScalingFactor",1.0);CHECK(errRes);
# Set scaling to 0.5, i.e., set the size of the# virtual sensor to 2x the size of the physical sensorcamera.BslScalingFactor.Value=0.5# Get the size of the virtual sensorscaledWidth=camera.BslScaledSensorWidth.ValuescaledHeight=camera.BslScaledSensorHeight.Value# Disable scalingcamera.BslScalingFactor.Value=1.0
You can also use the pylon Viewer to easily set the parameters.