SDK Changelog



  • Added support for Nvidia Jetson Orin:

    • See “Known issues & limitations” below for known issues when using Nvidia Jetson Orin.

  • Improved the quality and performance of the Omni engine:

    • The new and improved version of the Omni engine offers better coverage on transparent objects in less time.

    • Omni now allows capturing transparent objects with a greater distance between the foreground and background.

    • Edge artifacts, floating planes and rising floating points are drastically reduced.

    • The Omni engine now requires less light to get the same level of coverage, potentially allowing up to 2x reduction in acquisition time on all Zivid 2+ camera models. For Zivid 2+ M60, acquisition time is further reduced by 28%.

  • Using Settings::RegionOfInterest::Box may now significantly speed up acquisition and processing time:

    • The SDK can avoid acquiring and processing sensor data that is guaranteed to fall outside the region of interest.

    • The speed-up depends on the size and shape of the ROI box. Generally, a smaller ROI box seen from the camera’s viewpoint will give a greater speed-up.

  • Added new Settings2D::Sampling::Pixel for performing subsampled 2D capture:

    • Subsampled 2D captures can be considerably faster than full resolution 2D capture.

    • The available options mirror Settings::Sampling::Pixel, so that users can request 2D captures that exactly match the color data in the equivalent 3D capture.

  • Added new Settings::Processing::Resampling for upsampling/downsampling the point cloud:

    • These operations are performed after all other processing has been completed.

    • Downsampling is used to reduce the number of points in the point cloud. This is done by combining each 2x2 or 4x4 group of pixels in the original point cloud into one pixel in a new point cloud. This downsample functionality is identical to the downsample() method on the PointCloud class.

    • Upsampling can be used in combination with the existing subsampling modes to increase the output point cloud resolution while retaining the speed benefits of subsampled captures. This is achieved by mapping the computed pixels onto a higher resolution and interpolating the missing points in between where possible.

  • The projection API is no longer experimental:

    • The functions and classes have been moved from namespace Zivid::Experimental to Zivid::Projection. The related headers have been moved from Zivid/Experimental to Zivid/Projection.

  • Several settings are no longer experimental, and have been moved in the Settings hierarchy:

    • The Engine setting has been moved from Settings::Experimental::Engine to Settings::Engine.

    • The Reflection Removal filter’s Mode setting has been moved from Settings::Processing::Filters::Reflection::Removal::Experimental::Mode to Settings::Processing::Filters::Reflection::Removal::Mode.

    • The HoleFilling filter has been renamed to the Hole Repair filter. The setting has been moved/renamed from Settings::Processing::Filters::Experimental::HoleFilling to Settings::Processing::Filters::Hole::Repair.

    • If you set these particular settings directly in your code, then you must update the code to their new location.

    • Settings.yml files created from earlier SDK’s will continue to work in 2.12. However, if you modify these .yml files manually and update the field in the top of the file to 24 or higher, you will need to update these setting nodes to reflect their new location. Otherwise, you will get an “YAML document contains unknown key” exception when loading the .yml file.

  • The Stripe and Omni engines are no longer experimental.

  • Added HardwareRevision string to the CameraInfo class.

  • Reduced acquisition time for Zivid 2+:

    • Acquisition time reduced by about 5% for 3D captures.

    • Acquisition time reduced by up to 50% for 2D captures.

  • RGB color values in full-resolution Phase engine 3D captures are now more reliable and accurate:

    • This change leads to a slight performance loss for exposure-time limited captures (higher-end GPU and high exposure time) and a slight performance gain for compute-limited captures (low-end GPUs and low exposure times).

  • Optimized color processing for 3D captures to improve performance on low-end GPUs:

    • Full resolution 3D captures with colors enabled are up to 10% faster.

    • Subsampled 3D captures with colors enabled are up to 20% faster.

  • The Reflection Filter in Local mode is now up to 15% faster on low-end GPUs.

  • Added a splash screen that projects camera information for 60 seconds after camera boot:

    • The splash screen will display the Zivid logo, the camera’s serial number, IP address, firmware version and network link status.

    • The splash screen will disappear after 60 seconds, or when you connect to the camera via the SDK/Studio.

    • The splash screen is enabled by default, and can be disabled using the ZividNetworkCameraConfigurator tool.

  • Cameras that can be reached from multiple local network interfaces are no longer reported as inaccessible:

    • Previously, if a camera’s IP could be reached from multiple local network interfaces, its status would be inaccessible, and CameraState::InaccessibleReason would be ipInMultipleLocalSubnets. This condition is no longer reported as an inaccessible camera, as there are some valid network configurations where this condition will be true.

  • Updated Zivid 2 and 2+ firmware to version 1.22.4.


  • Added support for in-field calibration to .NET.

Bug fixes

  • Fixed a bug where the function detectFeaturePoints(Frame) would throw unless the Frame came from the function captureCalibrationBoard(Camera). detectFeaturePoints(Frame) now accepts any Frame as input, and the stricter requirements are only applied if users attempt to use the DetectionResult for in-field verification or correction.

  • Fixed a bug where the SNR of the Omni engine was incorrectly calculated in occluded and noisy areas. This hindered effective use of the noise filter to clean up noisy edges.

  • Fixed a crash that could happen on some newer versions of Intel OpenCL drivers on Windows, if the Application was destructed while a Frame2D object was alive.

  • Fixed a very rare bug where a capture could fail with an “Internal error: The acquisition done signal was never received!” exception.


  • Added “Acquisition Time” to the Information panel. “Acquisition Time” is defined as the duration from the start of the capture to when the camera has acquired the last image.

  • Added “Save Depth Map” option to the “File” menu to save the depth map as a Jet color mapped .png image.

  • Added descriptive tooltips to all the settings nodes in the Information panel.


  • ZividListCameras’s output will now display “Hardware Revision” as an alphanumerical string, matching the revision printed on the product label. Previously an integer major and minor version was displayed.

  • ZividFirmwareUpdater now exits with an error code if no camera(s) are found. Previously the tool would exit successfully with code 0.

Deprecation notice

  • SDK 2.12 is the last release with C++11 support in the C++ API. SDK 2.13 and later will require C++17 or newer.

Removal of support

  • Zivid One+ cameras are no longer supported by the SDK. The last SDK with support for Zivid One+ is 2.11.

    • Any connected Zivid One+ camera will not appear in the API, Zivid Studio or ZividListCameras.

    • The zivid-telicam-driver debian package on Ubuntu/Linux, and TELICAMSDK application on Windows, is no longer required by the SDK. The Zivid SDK Windows installer will give you an option to uninstall TELICAMSDK from your computer.

  • Visual Studio 2017 is no longer supported by the SDK. Windows users must migrate to Visual Studio 2019 or newer.

Known issues & limitations

  • Known issues with Nvidia Jetson Orin:

    • All Jetson Orin modules are supported, and Zivid has tested Orin AGX, Orin NX and Orin Nano modules.

    • Jetson Orin Nano is supported by the SDK, but Orin Nano has only 4GB/8GB of total RAM, which is shared between both the GPU and the CPU. 4GB will generally be insufficient to run any application using the Zivid SDK, while 8GB in practice may be insufficient for some use cases, especially if doing longer captures, using Stripe/Omni engine, and/or enabling many filters, and depending on how much RAM is used in user’s code. RAM usage in your application should be carefully evaluated if you are using Jetson Orin with 8GB RAM or less.

    • Zivid Studio tooltips may in some cases not be displayed as expected. A workaround is having another application open that continuously draws to the screen, such as “System Monitor”.

    • The Visualizer class may not update the point cloud output correctly when using keyboard shortcuts.

  • See, especially Errata, for all known issues and limitations.



  • Updated Zivid 2 and 2+ firmware to version 1.20.8.

Bug fixes

  • Fixed a bug for Zivid 2 and 2+ where cameras configured in DHCP mode would throw a “Timed out waiting for …” exception when connecting to the camera. This bug was introduced in SDK 2.11.0.

  • Fixed a bug for Zivid 2 and 2+ where continuously calling Zivid::Experimental::Projection::showImage() could project incorrect images. This bug has existed since the feature was introduced in 2.10.0.

Deprecation notice

  • SDK 2.11 is the last SDK with support for Zivid One+. 2.11 is a Long-Term Support (LTS) version for Zivid One+. 2.11 will receive patch updates with fixes for possible critical bugs or security issues that affect One+ operation until December 2026.



  • Added Settings::Sampling::Pixel::blueSubsample4x4/redSubsample4x4 for Zivid 2+:

    • This controls the projection color and how pixels are sampled for point cloud processing.

    • The blueSubsample4x4/redSubsample4x4 modes will project blue or red light, and sample one sixteenth of the pixels (resolution of 612x512 on Zivid 2+).

    • Compared to blueSubsample2x2/redSubsample2x2, these new modes will speed up both data acquisition and GPU processing time, as well as reduce GPU memory usage.

    • The maximum point cloud capture rate possible with a Zivid 2+ is almost doubled (from ~100ms to 50-60ms).

    • Point cloud captures with compute-heavy settings (like Omni engine) on weak GPUs are up to 3x faster in 4x4 mode compared to 2x2 mode.

    • The Zivid 2+ settings presets called ParcelsFast, ParcelsQuality and ConsumerGoodsFast have been modified to take advantage of the 4x4 mode.

  • All Zivid 2 and 2+ cameras that are discovered are now returned from Application::cameras():

    • The SDK will discover Zivid cameras on the local subnet(s), using the multicast DNS protocol. This includes Zivid cameras that have an IP configuration that is incompatible with the PC, for example mismatched IP/subnet settings, or if there are multiple Zivid cameras with the same IP address. Be aware that the multicast message is sent out from the PC on all local network adapters, including office/LAN network adapter etc.

    • Cameras that have incompatible IP settings compared to the PC will have status inaccessible. You will need to update the camera’s IP settings, or adjust the PC network adapter configuration, to use the camera from Zivid SDK/Studio. The camera’s IP can be changed using serial number by using the ZividNetworkCameraConfigurator CLI tool. See the CLI section of the Changelog.

    • Discovered Zivid 2 and 2+ cameras that are busy (in use by another process) will also be returned from Application::cameras(), and will have status busy.

    • Note! This is a behavior change from earlier SDK versions. Previously, cameras that were inaccessible (in other words, not connectable over TCP/IP and/or already connected from another process) would not be returned from Application::cameras().

    • If you have a Cameras.yml file in the Zivid config directory, then only the Zivid 2 and 2+ cameras that matches the entries in Cameras.yml will be returned. Note that Cameras.yml does not affect One+ cameras.

  • Added Status enum to the CameraState class that indicates if a camera is available, inaccessible, busy, requires firmware update, etc. See the CameraState::Status documentation for more information about the possible statuses.

  • Added InaccessibleReason enum to the CameraState class to give more information for cameras in inaccessible state. This enum will indicate if the problem is IP conflict, misconfigured subnet settings, etc.

  • Added Network::IPV4::Address string to the CameraState class that returns the IP address of the camera.

  • Stripe engine now supports all reflection filter modes:

    • In addition to the Global reflection filter, it’s also possible to choose the Local reflection filter, or disable the reflection filter entirely. This is useful in scenarios where you need to reconstruct thin objects like cables or pipes, but can allow some loss in reflection handling and point cloud quality.

  • Improved speed of back-to-back captures by better pipelining of acquisition, data transfer and processing:

    • The SDK will now be able to start the acquisition of the next (2D or 3D) capture while the previous (2D or 3D) capture using the same camera is still being transferred/processed. Prior to this release, the next capture for a camera would not start until all previous capture(s) on the same camera had finished all transfer and processing.

    • The improvement on total 2D+3D capture time is around 15-20ms on high-end Nvidia GPUs, and around 50-70ms on integrated Intel GPUs, depending on network speed and GPU capability.

    • To capture back-to-back as fast as possible, invoke Camera::capture() as soon as possible after the previous Camera::capture() returned (which is right after the image acquisition for that capture finished). Be aware that calling some Frame/Frame2D methods such as frame.pointCloud() or frame.imageRGBA() will block until the processing of that capture has finished. So for max speed you should avoid calling those methods in the same thread before starting the next capture, for example by having separate capture/processing threads or using std::async.

  • Improved Camera::capture() return time for Zivid 2 and 2+ cameras with Stripe/Omni engine on weaker GPUs:

    • Prior to this release, capture() in this scenario would not return immediately after the acquisition of the capture had completed. There could be a delay of up to 100-200ms after acquisition completed before capture() returned. This delay would only happen on weaker GPUs, typically Intel integrated GPUs. From this release Camera::capture() will return within a few milliseconds after acquisition has finished, independent of capture settings and GPU.

  • Improved capture speed with Stripe/Omni engine when compute-limited (low exposure-time) by up to 10%.

  • Added constructor to the Image class that constructs the image from a path to a .png/.bmp/.jpg file.

  • Added new ColorSRGB output format to PointCloud and Frame2D classes for copying color in sRGB color space:

    • The sRGB color space is suitable for showing an image on a display for human viewing. With sRGB output format, colors will appear brighter and more correct compared to the existing (linear) color formats.

  • Changed the output of Camera::toString():

    • A new Status field is added. The Network Path field is renamed to IP Address. The Internal camera id and Projector firmware tag fields are removed.

  • Disconnected file cameras will now be returned from Application::cameras(), as long as the user holds a handle to the file camera. Prior to this release, disconnected file cameras would not be included in cameras().

  • Updated Zivid 2 and Zivid 2+ firmware to version 1.20.6.


  • Added Zivid::Image::resolution() member function that returns the image size in a Resolution object.

  • Added new function Experimental::Calibration::pixelMapping() for retrieving information about how pixels in a subsampled capture maps to pixels in a full-resolution capture.


  • Added experimental projection API to project a custom color image with the Zivid projector:

    • This API was added for C++ and Python in 2.10.0, and is now available from .NET.

    • Available for Zivid 2 and Zivid 2+.

  • Added Resolution property to the Image class that returns the image size in a Resolution object.

Bug fixes

  • Fixed a bug in the .NET wrapper where a Zivid.NET.CloudVisualizer instance could not be run multiple times in the same process.

  • Fixed an issue for Zivid 2+ when performing 3D capture with Settings::Sampling::Pixel set to blueSubsample2x2/ redSubsample2x2, in combination with Settings::Sampling::Color::rgb, where the camera could use above 100W of power for a short duration. The camera will now stay below 100W power usage in this case, unless the Config.yml option Camera/Power/Limit is set to unlimited. See the Changelog for 2.10.1 for more info about the Power Limit config.

  • Fixed a “StructuredLightCamera::~StructuredLightCamera was invoked in the wrong thread” exception that could happen when disconnecting from a camera in specific rare circumstances.


  • ZividNetworkCameraConfigurator can now configure camera IP settings given only the serial number if the camera, even if the camera is not accessible over TCP/IP:

    • The tool can configure network settings for any discovered Zivid camera, using multicast UDP messages. This simplifies changing camera network configuration, as you don’t need to have a TCP/IP connection to the camera in order to change its network configuration.

    • This feature requires that the camera is already on firmware version 1.17.1 or newer (from SDK 2.10.0 or newer). Cameras with older firmware versions will still require that you connect to the camera via direct TCP/IP connection (as in SDK 2.10 and earlier).

  • ZividListCameras will now list all discovered Zivid 2 and 2+ cameras, even cameras that are inaccessible or busy. The Status field will give you the status of the camera. See the API section for more information.

  • ZividListCameras will no longer automatically invoke camera.connect() on each discovered camera. You can connect to each camera by passing the argument --test-connect, which is useful to determine if the camera is accessible over TCP/IP.

  • ZividListCameras will now print a notification message if you have a Cameras.yml file on the PC.

  • ZividListCameras’ output for each camera is changed. See the description of changes to Camera::toString() in the API section above.


  • Color/RGB values in the 3D view and 2D color image view will now be shown in sRGB color space:

    • This makes the color images look brighter and more correct on monitors, compared to previous versions of Studio which displayed colors in linear RGB color space.

    • When saving color/RGB images from Studio, the user can select if they want to use sRGB or linear color space.

    • Exported 3D point clouds in .ply, .pcd or .xyz format will still store colors in linear RGB color space.

  • Studio will now show all inaccessible and busy cameras, which previously were not shown via API or Studio. For cameras in inaccessible state, a helpful description about how to configure the camera is displayed.

  • Added IP address and camera status to the camera selector combobox.

  • Studio will now periodically check the connection state of all cameras. Studio will automatically detect new cameras, disconnected cameras and state changes (such as changed camera status or changed IP address).

Removal of support

  • AMD compute devices/GPUs are no longer supported by the SDK, and will give an error message:

    • Nvidia GPUs and Intel GPUs are the supported compute devices.

    • AMD CPU’s can be used, as long as they are used with an Nvidia or Intel GPU.

    • User can opt in to run with an unsupported compute device, by setting the Config.yml option ComputeDevice/AllowUnsupported to yes. However, such a setup may give unexpected results and errors, and is not tested by Zivid. See the knowledge base for more information.

Deprecation notice

  • Support for using Visual Studio 2017 is deprecated since 2.10.1, and will be removed in the next SDK release. We recommend to migrate to VS 2019 or newer.

Known issues & limitations



  • Added support for Zivid 2+ M60 and Zivid 2+ L110:

  • Zivid 2+ cameras only: It is now possible to disable the ContrastDistortion Correction filter when using the Stripe engine:

    • The CD Correction filter will smooth out edges, so disabling this filter can be useful to preserve edge detail.

    • Note: Zivid 2 and One+ cameras are unchanged, and still require this filter to be on when using Stripe engine.

  • Lowered the minimum possible value for Settings::Processing::Filters::Cluster::Removal::MaxNeighborDistance from 4 to 2. Using MaxNeighborDistance values below 4 can be useful to remove more bad points on certain scenes.

  • Zivid 2+ cameras only: Reduced max Brightness setting when projecting white light from 2.5 to 2.2:

    • The maximum brightness for 2D captures and 3D capture with Settings::Sampling::Pixel::all is reduced from 2.5 to 2.2. An exception message will be thrown if you use brightness > 2.2.

    • The default brightness for 2D capture in the API is changed from 2.5 to 2.2. The default for 3D capture remains at 2.5.

    • This change is done to make sure the 2+ cameras stay below 100W power usage when capturing. If your application allows more than 100W power consumption, you can remove this limitation and keep using 2.5 with the Config.yml option “Camera/Power/Limit”.

    • See for more info.

  • Updated Zivid 2 and Zivid 2+ firmware to version 1.18.4.

Bug fixes

  • Fixed a bug where Zivid 2 and 2+ could drop Ethernet packets and lose connectivity when not operating at 10 GbE.

  • Fixed a bug that could cause excessive point cloud smoothing when using the Contrast Distortion Correction filter with the Zivid 2+ M130.

Deprecation notice

  • Support for using Visual Studio 2017 is deprecated and will be removed in an upcoming SDK release:

    • Zivid recommends to transition to a newer Visual Studio version.

  • Support for using AMD compute devices/GPUs is deprecated 2.10.1 and will be removed in 2.11.0:

    • AMD compute devices are no longer supported due to low usage and OpenCL stability issues in the drivers.

    • Nvidia GPUs and Intel GPUs will be the supported compute devices.

    • It will be possible to opt in to run the SDK with an unsupported compute device, by enabling an option in the Config.yml file. However, such a setup may give unexpected results and errors, and is not tested by Zivid.



  • Added support for Zivid 2+ M130:

    • Zivid 2+ M130 provides higher resolution point clouds and 2D color images, improved colors and increased object coverage. To read more about this camera, see

  • Added new Omni vision engine for Zivid 2+:

  • Added Settings::Sampling::Pixel::all/blueSubsample2x2/redSubsample2x2 for Zivid 2 and Zivid 2+:

    • Controls the projection color and how pixels are sampled for point cloud processing.

    • blueSubsample2x2/redSubsample2x2 will project blue or red light, and sample one quarter of the pixels. These options decrease capture time, memory usage, and resolution of the point cloud. It might also give better performance in ambient light and for shiny objects.

    • The default for Zivid 2+ is blueSubsample2x2. Set to all if you want a full resolution (5MP) point cloud.

    • The default for Zivid 2 is all.

    • If you are using an AMD GPU, see “New known issues in this release” section below for a known issue.

  • Added Settings::Sampling::Color::rgb/disabled for configuring color sampling:

    • When set to disabled, color data will not be included in the PointCloud.

    • disabled optimizes capture speed.

    • disabled avoids separate white illumination in Settings::Sampling::Pixel subsampling modes.

    • The default is rgb.

  • Added Settings::Processing::Filters::Noise::Suppression:

    • Reduces noise and outliers in the point cloud.

    • This filter can also be used to reduce ripple effects caused by inter-reflections.

    • Consider disabling this filter if you need to distinguish very fine details and thus need to avoid any smoothing effects.

  • Added Settings::Processing::Filters::Noise::Repair:

    • Improves surface coverage by repairing regions of missing data due to noisy points.

    • Consider disabling this filter if you require all points in your point cloud to be of high confidence.

  • Added experimental Zivid::Experimental::Projection API to project a custom color image with the Zivid projector:

    • Available for Zivid 2 and Zivid 2+ camera models.

    • Can illuminate with projector pixels that correspond to 3D points in your scene.

  • Extended the experimental intrinsics API to get intrinsics appropriate for a given Settings or Settings2D:

    • With the introduction of Settings::Sampling::Pixel, a single camera model can yield a variety of output resolutions. Use the new intrinsics functions to get intrinsics appropriate for your output resolution.

    • The original function will yield intrinsics corresponding to the default Settings for the given camera model. See all default settings at

  • Added settings presets adapted to 50 Hz and 60 Hz ambient light sources.

  • Improved performance of the hole filling filter with larger HoleSize values:

    • 2X-4X faster on high-end hardware, and up to 15% faster on low-end hardware.

    • Speed improvement increases with larger HoleSize values, starting from HoleSize around 0.2-0.3.

    • The filter might be slower, around 5-10ms, for small HoleSize values (around 0.1) and with high-end hardware.

  • Changed CameraInfo::ModelName string for Zivid 2 M70 and Zivid 2 L100 cameras:

    • The model name for M70 changed from “Zivid Two” to “Zivid 2 M70”.

    • The model name for L100 changed from “Zivid Two L100” to “Zivid 2 L100”.

    • To programmatically check for camera model, we recommend to use the CameraInfo::Model enum.

  • Removed support for loading the FileCameraZividOne.zfc file camera. New file cameras are available at

  • Updated Zivid 2 and Zivid 2+ firmware to version 1.17.1.

  • Removed support for Ubuntu 18.04.


  • Added constructors to Zivid::Image to create an image from begin and end iterators/pointers.

  • Added class Zivid::PointXY for representing a point in 2D space.

  • Added global begin/end/cbegin/cend iterator functions for Zivid::Array2D.

Bug fixes

  • Fixed a bug where Frame::clone() would perform a shallow copy (and not a deep copy) of the PointCloud data.

  • Fixed a bug where the X and Y coordinate of a point could be NaN while Z was not NaN. This bug occurred with very low probability and only if the ContrastDistortion filter was enabled.


  • Added support for 2D capture.

  • Added option to enable Ambient Light Adaptation (50Hz/60Hz/Off) for settings presets.

  • User is now required to select a settings preset or the Capture Assistant, or change to Manual Mode, before the Capture button is enabled.

  • Fixed a bug where the visual position of a settings slider did not match the actual value that was displayed in the text box.

  • Removed information box that used to be displayed when selecting the Stripe Engine.

New known issues in this release



  • Added cluster removal filter:

    • Removes small clusters and individual floating points from the point cloud. These can arise from reflections and partially occluded areas.

    • The MaxNeighborDistance setting controls how strict the algorithm is when grouping points. A low value will tend to remove sparse, noisy data, and planes of reflection as well. Use low values with caution to avoid removing useful data.

    • The MinArea setting is specified in mm^2 and defines the minimum area a cluster has to have in order to be kept.

    • The filter has a processing overhead of around 10ms on high-end Nvidia and AMD GPUs, and 75-225ms on Intel GPUs.

    • The filter is off by default.

    • Capture Assistant will turn this filter on.

  • Improved Gaussian filter:

    • The Gaussian filter will no longer create false planes between foreground and background edges, for example on the back/shadow side of objects. The new filter is also slightly better at preserving the large-scale three-dimensional shape of objects, for example the front-side edges of boxes.

    • On a noisy flat plane, the same value of the Sigma parameter will give approximately the same amount of smoothing as in the previous version of the filter.

  • Added Region of Interest:

    • A Region of Interest Box can be specified in the settings. All points outside of this box will be filtered away (set to NaN).

    • The box is specified by 3 points, O, A and B, that define two vectors, OA and OB. Together, point O and vectors OA and OB define a parallelogram. Two extent values are provided that defines how the parallelogram is extruded along its surface normal vector, to define a box.

    • A Depth (Z) range can also be specified. This will filter away all points with Z coordinate outside of this range.

    • Region of Interest does not reduce capture time or the amount of data in the point cloud.

    • Region of Interest adds a very small processing overhead.

  • Camera::capture() function will now return shortly after the acquisition of images is complete.

    • When capture() returns, all images have been acquired and the projector has stopped projecting patterns. At this point you can safely move the camera, move a robot into the workspace, or capture from a second camera that overlaps the same workspace. Note that there will still be remaining transfer of data and processing before the capture is finished and the point cloud is available.

    • Calling frame.pointCloud() will block until the processing is done and the point cloud is available.

    • For more information, see the API documentation for the capture() function.

  • Added a new experimental hole filling filter:

    • Hole filling interpolates missing values in the point cloud from its neighbors in a circular neighborhood.

    • HoleSize defines the relative diameter of holes to fill. Increasing this will fill more points, but require more computation time. The maximum allowed hole size scales with distance, so that we allow filling larger holes at greater distances.

    • Strictness controls the level of strictness when considering if a point should be filled. A higher level of strictness requires a missing point to be surrounded by valid points on more sides in order to be filled. Increasing this will fill fewer points, but it will be less likely to fill gaps that are not circular, for example between two edges.

    • The hole filling alters only the 3D points, leaving the SNR and color values unchanged.

    • See for more information.

  • Capture speed improvements:

    • The Gaussian smoothing filter is now faster. This is most noticeable on Intel GPUs, where the cost of enabling the filter with default Sigma is reduced from 20-30ms to 5-10ms. This effect is even stronger at higher Sigma values.

    • Processing when capturing with Stripe engine is now faster. This is most noticeable on Intel GPUs, where total Stripe engine capture time (acquisition + processing) is reduced by up to 15%.

    • The acquisition process on the Zivid Two has been optimized so that the total capture time (acquisition + processing) with default settings is reduced by about 10% regardless of GPU.

  • Temperature stabilization mode for Zivid Two is enabled by default and is no longer experimental.

    • In this mode, the camera will use more power when idling, to keep internal camera temperatures more consistent. The more consistent temperature decreases the difference in dimension trueness between high and low duty cycle capture periods.

    • Some yellow light will escape the projector when this mode is active.

    • This mode can be disabled using the configuration file. See

  • Added API for settings presets:

    • The presets are hand-tuned by Zivid, optimized for particular scenarios/use cases and for different camera models.

    • The presets are available in the namespace Zivid::Presets.

    • Note: New presets can be added, and existing presets can be changed or removed completely in future SDK releases. We recommend to store the preset you want to use as a settings.yml file and then load that file directly, to avoid accidental changes in behavior in future SDK releases.

  • Added support for new file cameras based on Zivid One+ and Zivid Two:

  • Added support for infield correction/verification from stored .zdf files:

    • captureCalibrationBoard(Zivid::Camera &camera) and detectFeaturePoints(const Zivid::Frame &frame) functions are added in Zivid::Experimental::Calibration.

  • Added filtering of points with negative Z value. These points are now set to NaN. Note that these points would with typical capture settings be filtered away anyway, usually by the noise or outlier filter.

  • Added function Frame2D::cameraInfo() to return the CameraInfo object for the camera used to capture the frame.

  • Added support for ColorBGRA output format to the PointCloud and Image classes.

  • Added an exception message when loading .yml files that contain unrecognized/unknown YAML nodes. Previously these nodes would be ignored. Note that if you hit this exception, the problem can also be that the __version__ data node at the top of the .yml file needs to be incremented.

  • Methods on the Zivid::Camera object can now safely be called from multiple threads at the same time, for example by using std::async. Under the hood, the function calls are put in a per-camera queue and executed in sequence. Note that you must still list cameras, connect to cameras and do firmware upgrades from the same thread, as these operations are not thread safe.

  • The default value for Settings::Processing::Filters::Reflection::Removal::Enabled is changed from false to true for all Zivid One+ camera models. If you use Zivid One+, and you want to capture without the reflection filter, make sure this setting is set to false (or no in the .yml file).

  • Updated Zivid Two firmware to version 1.14.7.

  • Ubuntu 18.04 is End Of Life on April 30, 2023. Support for Ubuntu 18.04 is deprecated in this SDK release and will be removed in the next release.


  • The constructor of Zivid::Range will now throw an exception if the minimum value is larger than the maximum value.

Bug fixes

  • Linux: Fixed a bug where exported weak symbols from third party libraries like boost and asio. This could cause dynamic linking issues for users who were also using these libraries.

New known issue in this release

  • When using Nvidia driver 510 and capturing with two or more cameras back-to-back, on occasion incorrect patterns/stripes can be seen in the upper parts of the point cloud. This issue has only been seen on this Nvidia driver version. We recommend using a different Nvidia driver version if you capture with multiple cameras. Drivers 470, 515 and 525 have been tested and are working well. This issue is not visible if you only use one camera.

  • See, especially Errata, for all known issues and limitations.


  • Added Infield Correction/Verification Wizard under the Tools menu.

  • Added settings presets. The presets are visible in the selection box under the Assisted tab in the Capture box.

  • Added a point picker icon under the Region of Interest Box settings to select a point from the depth/color/snr/normal maps.

  • Added a button to show/hide Region of Interest Box wireframe.

  • Added Help button on the right side panel when no cameras are found. The Help button goes to the knowledge base.

  • The “Enable Required Filters” button for Stripe engine will now also set reflection removal filter mode to global.

  • Fixed a bug where clicking the “Start Firmware Update” button quickly more than once could cause a “The camera firmware is already up to date” error after the update finished.

  • Clicking an input field in the settings tree will now automatically select the text.

  • Improved tooltips for many buttons, selection boxes and other UI elements.



  • The ZividExperimentalHandEyeCalibration CLI tool can now read Zivid::Matrix4x4 YAML files saved from the Zivid SDK. The tool can still read the older OpenCV YAML file format used in previous SDK releases. If the --transform-file argument is provided, the tool will save the hand-eye calibration transform using the same file format as the input files.

Bug fixes

  • Fixed a debug assert that would occur when capturing with Zivid Two on Windows in Debug mode. This bug was introduced in SDK 2.8.0.

  • Fixed a bug in HDR capture where the color image could contain strange artifacts when combining a very dark and a very bright acquisition. This bug was introduced in SDK 2.7.0.

  • Fixed a bug where old log files would not be deleted even if the size of the log directory was above the MaxTotalSizeMB configuration (default 1000MB). Log files would still be deleted when they become older than the HistorySize configuration (default 30 days), and for a single process the logs would not take more than MaxFileSizeMB * (1 + RotationCount) MB (default 50MB*3 = 150MB). This bug was introduced in SDK 2.7.0.

  • Fixed an issue where an “Unknown product number ‘’” error could occur when discovering Zivid Two cameras. This bug was introduced in SDK 2.8.0.


  • Studio: Fixed a “Cannot assign [undefined] to double” error that could occur when dragging sliders in Studio using a touchpad.



  • Improved capture speed of Zivid Two:

    • The amount of data transferred from the Zivid Two to the PC for each acquisition is reduced. This improves capture speed when the network link is the bottleneck, for example when using less than 10Gbps connection between the camera and the PC, or when capturing with several cameras simultaneously.

    • Zivid Two can now acquire all images in an HDR sequence right after each other. Previously, the camera would wait for all images in one acquisition to be transferred back to the PC, before the next acquisition would start. This improves the capture speed of HDR captures and gives shorter and more predictable acquisition time that is independent of the network speed. Note that when Brightness setting is above 1.0, the thermal safety mechanism can still cause pauses in acquisition. For more information, see:

    • The capture speed with 1Gbps connection is improved by 1.5x to 2.5x. With 10Gbps connection, the capture speed is improved by 5%-50% on Windows, and 0%-15% on Linux. The biggest percentage-wise improvement can be seen when using HDR and/or the Stripe engine.

    • The capture speed when capturing with multiple Zivid Two cameras at the same time over a congested network link is improved. For example, the capture speed for 3-acquisition HDR on 3 cameras simultaneously using a 1Gbps switch is improved by 2.5x to 3x.

  • Added support for automatic discovery of Zivid Two:

    • The SDK will now search for available Zivid Two cameras on the network using Multicast DNS protocol. The cameras that are discovered and are reachable will be visible via the SDK and in Zivid Studio.

    • If a Cameras.yml file is present in the Zivid configuration folder, then only the IPs/hostnames listed in that file will be visible in the SDK, and auto-discovery will not be performed.

    • The camera must be updated to the newest firmware version (FW 1.9.6, included in SDK 2.8, or newer), before it can be discovered.

    • See for more information.

  • Added save and load methods to the Matrix4x4 class.

  • Added support for saving Image objects to JPG and BMP format.

  • Added support for Ubuntu 22.04.

  • Added support for Zivid Two L100.

  • The Camera::closeAperture() method call previously had no effect on Zivid Two. This method will now throw an exception stating that this feature is not supported on Zivid Two.

  • Updated Zivid Two firmware to version 1.9.6.


  • Added begin, end, cbegin and cend methods to the Array2D class.


  • Added a compilation error if using static runtime library with Visual Studio. Zivid SDK must be built with the dynamic runtime library, option /MD or /MDd. This can be configured under “C/C++” -> “Code Generation” -> “Runtime Library” in your Visual Studio project.

Bug fixes

  • Zivid Two only: Fixed an issue with incorrect color balance calculation.

  • Zivid Two only: Fixed an issue where a firmware update can time out and fail due to slow network upload speed.


  • Added Signal-to-noise ratio (SNR) map.

  • Added Normal map.

  • Added dropdown menu in the upper left corner to switch between different views.

  • Added dropdown menu in the top of the 3D view to select the point size.

  • Added shortcuts 1 to 5 to select between different views.

  • Adjusted the design of the footer preview images to avoid occluding the text in the footer bar.

Known issues & limitations



  • Added new experimental Local mode of the Reflection filter:

    • A new setting Settings::Processing::Filters::Reflection::Removal::Experimental::Mode is added to select mode, which can be local or global. global corresponds to the old reflection filter and is the default value.

    • Local mode preserves more 3D data on thin objects, generally removes more reflection artifacts and processes faster than the Global mode.

    • Global mode is generally better at removing outlier points in the point cloud.

    • Local mode is experimental and can be changed in future releases.

  • Added a new setting Settings::Processing::Color::Experimental::Mode:

    • This setting has three options: automatic, toneMapping and useFirstAcquisition.

    • automatic mode is the default and corresponds to the previous default behavior of the SDK. This mode is equal to useFirstAcquisition for single-captures and toneMapping for HDR captures.

    • useFirstAcquisition will always use the color data from only the first acquisition that was provided in Settings. This mode can be used for both single-acquisition and multi-acquisition HDR captures. This mode provides more fine-tuned control of the colors than toneMapping, and provides stable color output even when the contents of the scene changes.

    • toneMapping combines the color data from all the acquisitions to create one merged and normalized color image.

    • This new setting replaces the existing Settings::Processing::Color::Experimental::ToneMapping::Enabled setting, which was added in SDK 2.3.0.

    • For more information, see the documentation for Settings::Processing::Color::Experimental::Mode.

  • Zivid Two: Added new experimental mode for keeping internal camera temperatures stable between captures.

  • Zivid Two: Added support for name queries ending with the .local label using Multicast DNS.

  • Added pose method to the DetectionResult class that returns the pose of the calibration board.

  • Added inverse method to the Matrix4x4 class that returns the inverted matrix.

  • Zivid One+: Improved processing of pixels that are immediately to the left or the right of pixels with no signal (for example over-saturated pixels) when using the Phase engine. These pixels could previously cause a small amount of floating points in regions containing no-signal pixels.

  • Zivid One+: Improved filtering of pixels that cannot be reliably decoded within the Phase engine pattern. These pixels could previously show up as floating points if Noise and Outlier filter is turned off, mostly in regions with low signal. Similar filtering was already present for Zivid Two.

  • Added support for newer AMD GPUs:

    • AMD cards with RDNA architecture would give an error on previous SDK versions, but are now supported.

    • AMD RDNA cards (such as RX5500 and RX5700) can be unstable on Ubuntu depending on the installed GPU driver version and OS version. We recommend to test stability carefully with your setup if you use these models.

  • Improved capture speed when using the Stripe engine:

    • Around 3%-12% improvement measured on high-end Nvidia GPU, and 5%-15% improvement on Intel integrated GPU. Most percentage-wise improvement when capturing with HDR.

  • Improved capture speed when using HDR captures with Phase engine:

    • Improvements from 2% to 12% measured on a high-end Nvidia. Similar improvements on low-end Intel integrated GPUs, while high-end integrated Intel GPUs have similar performance to SDK 2.6.

    • Highest percentage improvement on shorter HDR sequences.

  • Degraded capture speed for single-acquisition capture with Phase engine when using Intel driver:

    • Capture time increased by 5% to 15% compared to SDK 2.6, depending on settings. Most percentage-wise degradation when enabling many filters.

    • This does not apply to Stripe engine or HDR captures, see points above.

  • Improved processing time for normals by about 50%:

    • Typical processing time for calculating normals for a full resolution point cloud is now about 5-20 ms on an Nvidia GPU, and 15-40 ms on an integrated Intel GPU, depending on the performance of the GPU.

  • Changed to using new GPU compute framework internally.

  • The connection time to the camera is increased, due to initialization of the compute pipeline:

    • The first time a camera is connected to in a process can take 6-10 seconds longer than in SDK 2.6.

    • This increase in connection time will only happen once per camera model, per Zivid::Application object.

  • Added cloud connected logging to improve product quality and customer service experience:

  • Added better error message if a Zivid::Application object is created when one already exists.

  • Using multiple Zivid One+ cameras at the same time is now non-experimental:

  • Updated Zivid Two firmware to version 1.7.4.

  • Removed the experimental setting Settings::Processing::Color::Experimental::ToneMapping::Enabled:

    • This setting is replaced by Settings::Processing::Color::Experimental::Mode (see point above).

  • Removed support for Ubuntu 16.04.


  • Added const overloads of the begin and end member functions for the Matrix4x4 class.


  • Added a new Matrix4x4 class to .NET wrapper, corresponding to the class with the same name in C++ API.

    • The Matrix4x4 constructor takes as input a 2D .NET array.

    • Matrix4x4 provides an Inverse method that returns the inverted matrix.

    • Matrix4x4 provides a ToArray method that returns a 2D .NET array.

  • Added a Transform method overload to the PointCloud class that takes a Matrix4x4 as argument.

Bug fixes

  • Fixed a memory leak in Zivid::Application destructor, which could cause out-of-memory errors when making many applications sequentially within the same process.

  • Fixed a bug where user could get an “An OpenCL error occurred: Failed to read buffer” when using the Visualizer class with an Intel GPU on Ubuntu.

  • Fixed a bug with AMD GPUs where capturing with HDR would return inconsistent results across different captures.

  • Fixed a bug with AMD GPUs where the application could crash after a few number of captures.

  • Fixed a bug where the estimateIntrinsics function in some cases would return suboptimal intrinsics parameters.

  • Zivid Two: fixed a TCP/IP multicast security vulnerability where the camera responds to a TCP connection with an invalid source address (RFC 1122 ch.


  • Fixed a bug where the user could get an “OpenGL error: GL_INVALID_OPERATION” when capturing when using an Intel GPU on Ubuntu.

  • Fixed a bug on Ubuntu where the “Open Frame” file dialog could be unresponsive/frozen.

  • Added a “Move to top” action under the “…” context menu under each Acquisition on the right side panel.

Known issues & limitations


Bug fixes

  • Fixed a bug on Windows where loading a .zdf file with non-ASCII characters in the file name would throw a “Failed to load frame from file” exception.

  • Fixed an issue where the SDK used too strict limits when checking the validity of a Pose transformation matrix, which could cause an exception during hand-eye or multi-camera calibration.

  • Fixed an unintended change in color output introduced in SDK 2.6.0 when performing a HDR capture with identical acquisition settings:

    • In SDK 2.5.0 and earlier, when doing a HDR capture using the same acquisition settings for all the acquisitions in the HDR, the output color image would not be tone mapped. In SDK 2.6.0 an unintended change in behavior caused the color image to be tone mapped in this scenario. In SDK 2.6.1 this change is reverted, to be consistent with the behavior in SDK 2.5.0 and earlier.

    • Note that tone mapping can be turned on explicitly, by setting Settings::Processing::Color::Experimental::ToneMapping::Enabled to always.



  • Added Diagnostics::Enabled to Settings:

    • When Diagnostics is enabled, extra diagnostics and debugging information is collected during capture. This information will be saved in the .zdf file, and can be used by Zivid’s support team to troubleshoot issues and provide better assistance.

    • Enabling Diagnostics increases the capture time and the RAM usage, and the size of the .zdf file.

    • It is recommended to enable Diagnostics only when reporting issues to Zivid’s support team.

  • Zivid One+ only: Important product lifetime improvement: Fixed an issue where a Zivid One+ camera can end up with a damaged projector if powered on for weeks before the first capture is triggered from the application.

  • Zivid One+ only: Removed time penalty when switching between 3D capture and 2D capture if the 2D capture uses brightness 0.

  • Improved capture speed with Stripe engine:

    • 5% to 15% capture speed improvement measured using NVIDIA GPUs.

    • Using a fast CPU and a slow GPU (for example Intel integrated GPU) will have about the same or slightly worse performance (1%-5% worse) compared to 2.5.

  • Added CPU Model, ComputeDevice Model, ComputeDevice Vendor and OperatingSystem to the FrameInfo class.

  • Added support for rotation of the calibration board for in-field correction/verification. The board can now be oriented 0, 90, 180 or 270 degrees (+/- 15 degrees) from the perspective of the camera.

  • Improved robustness of the checkerboard detection algorithm, used for calibration and in-field correction/verification, in cases of significant reflections or glare from the calibration board.

  • Improved the command line experience when verifying in-field correction with ZividInfieldCorrection:

    • Verification can now be repeated without having to reconnect to the camera.

    • Verification also provides a statistical summary of dimension trueness measurements.

  • Improved the exception message when trying to save files to nonexistent directories.

  • Constructing a Frame object from a .zdf file saved using SDK 1.x and re-saving that Frame object to a .zdf file is no longer supported, and will throw an exception.

  • The underlying format of .zdf files has changed in this release:

    • If a .zdf file from 2.6.0 or newer is opened in SDK 2.5.0 or older, the SDK will throw an exception with message “Failed to load frame from file”.

    • Older .zdf files can still be loaded using the API or Zivid Studio.

  • Updated Zivid One+ firmware to version 1.9.2.

  • Updated Zivid Two firmware to version 1.6.0.

  • Support for Ubuntu 16.04 is deprecated and will be removed from SDK 2.7.


  • The <Zivid/Zivid.h> header will no longer include Experimental header files. Experimental header files must be included explicitly.


  • Fixed a bug where the 3D point cloud could become flipped upside-down when scrolling the mouse wheel rapidly.

Known issues and current limitations



  • Added support for normals.

    • Normals can be calculated from the PointCloud object using copyNormalsXYZ(). This returns a 2D array of unit normal vectors for each point in the point cloud.

  • Added Model enumeration to the CameraInfo class. This enumeration can be used to differentiate between camera models; Zivid One+ Small/Medium/Large and Zivid Two.

  • Added support for exporting organized point cloud to .pcd format (with correct WIDTH and HEIGHT attribute). To enable this fix you must opt in using the Config.yml file. Set the config value APIBreakingBugFixes / FileFormats / PCD / UseOrganizedFormat to true. For example of how to write and use a Config.yml file, see

  • Performance improvement for the “Stripe” vision engine. The improvement is between 2% and 10% depending on GPU type.

  • Removed support for early engineering samples (revision A) of Zivid Two.

  • Updated Zivid One+ firmware to version 1.8.8.

  • Updated Zivid Two firmware to version 1.5.2.

  • Support for Ubuntu 16.04 is deprecated and will be removed from the SDK around April 2022.


  • Added experimental method Zivid::Experimental::SettingsInfo::resolution() to query the point cloud resolution given a Settings object and a CameraInfo object.

Bug fixes

  • Fixed a crash that could occur in the GenICam driver if the physical connection to the camera was lost in the middle of the GenICam camera connection process.

  • Fixed a crash that could occur during shutdown of the program if the Zivid::Application was stored in a static variable.

  • Fixed an issue where a process using Zivid SDK might be stuck forever during shutdown if it received a SIGTERM/SIGILL or similar signal.

  • Fixed a small memory leak when calling Camera::connect() when using Zivid One+ cameras.


  • Added support for depth map coloring of points in the 3D point cloud view. Press “D” to toggle this mode on and off.

  • Added support for opening .zdf and .yml files by dragging and dropping them onto the Zivid Studio window.

  • Fixed an issue where expanding the main right panel by dragging its edge to the left would incorrectly collapse the Information Panel, if the Information Panel was open.

Current limitations for Zivid Two

  • Direct connection between Zivid Two and a dedicated 10Gb PCI-Express network card is recommended for optimal performance. A Thunderbolt 3 external network adapter connected to a Thunderbolt 3 port offers similar performance to a dedicated PCI-express card. USB-based network adapters can occasionally give errors when using the camera, and has reduced and more variable capture speeds.

Known issues

  • Zivid Two only: If the PC process is aborted non-cleanly (for example via a SIGINT, SIGABRT or similar) when connected to a Zivid Two, such that the TCP connection between the camera and the PC is not closed properly, the camera will power cycle when it detects that the network connection is down (typically within 15 seconds).

    • On rare occasions, the camera may not properly detect that the connection to the PC process has been killed. The camera will then continuously reject new connections from the SDK, which will make the camera not visible from the SDK. In this scenario the camera must be power-cycled manually.

  • Zivid Two only: On very rare occasions a “Command failed: CameraImageTimeout” exception may be thrown during capture. This will resolve itself on the next capture.

  • Zivid Two only: Capture time on Windows can occasionally be longer (more than 1 second longer than normal) due to Ethernet packet loss leading to data re-transmits. We recommend to increase “Receive Buffers” and “Transmit Buffers” in the network driver settings in Windows to reduce the occurrence of packet loss.

  • Capture time can be higher on Windows compared to Linux for identical hardware. The difference is larger for low exposure times, and lower for higher exposure times. The relative difference between Windows and Linux on identical hardware is higher when using Zivid Two, compared to using Zivid One+.

  • Ubuntu 20.04 only: When using Linux 5.8 kernel (released with Ubuntu 20.04.2 when using the newer HWE kernels), with an Intel GPU as rendering device, Zivid Studio and Visualizer can give errors like “CL_OUT_OF_RESOURCES” and “OpenGL error: GL_INVALID_OPERATION” when displaying the point cloud. To avoid this issue, use Linux kernel 5.4, which is the LTS (stable) base Linux kernel for Ubuntu 20.04.


Bug fixes

  • Fixed an issue that prevented the user from being able to replace libusb (used internally by the SDK) with their own version.


Bug fixes

  • Zivid Two with calibration model 2.1 only: Fixed a bug on Windows in Debug mode where capturing would throw an “Assertion Failed” exception.



  • Added support for the experimental “Stripe” vision engine for Zivid Two.

  • Added support for calibration model 2.1 for Zivid Two. Calibration model 2.1 further improves the accuracy of the Zivid Two camera.

  • Added support for using multiple Zivid Two cameras.

    • This feature has been tested using up to four Zivid Two cameras simultaneously from one PC.

    • Multiple cameras can be used simultaneously, however, each individual camera should not be used from several threads at the same time. Connecting to the cameras via the SDK must be done in sequence.

    • For more information about how to set up multiple cameras, visit the knowledge base:

  • Added ZividNetworkCameraConfigurator CLI tool to change the network settings of a Zivid Two camera.

  • Improved point cloud accuracy when using camera outside of temperature specification. Automatically applies to any Zivid One+ or Zivid Two camera.

  • Improved hand-eye calibration accuracy in both eye-in-hand and eye-to-hand configurations.

  • Improved Zivid Two network performance in cases of network packet loss.

  • Improved Zivid Two projector longevity at high operating temperatures.

  • Improved Zivid Two capture time when using exposure time 10000 microseconds and above.

  • Updated Zivid One+ firmware to version 1.8.7.

  • Updated Zivid Two firmware to version 1.4.1.

  • Removed support for the original Zivid One camera. (Note: this does not apply to Zivid One Plus cameras.)


  • Fixed an issue where switching back and forth between two or more cameras could give an error when connecting to the camera.

Bug fixes

  • Fixed a crash that could occur during destruction of very short-lived Zivid::Application objects.

  • Fixed an issue on AMD compute devices when capturing with all filters disabled, where invalid points would be marked as “inf” instead of NaN.

  • Fixed an issue where Stripe Engine could cause a SIGILL on Linux when run on CPUs without features such as AVX.

  • Fixed an issue on Stripe Engine where the signal-to-noise ratio could contain NaN values.

  • Zivid One Plus only: Fixed a bug introduced in SDK 2.2 that caused excessive current consumption during boot.

  • Zivid One Plus Revision C only: Fixed an issue where the status LED on the back of the camera was red during normal operation.

  • Zivid Two only: Fixed an issue where the first captured point cloud after a firmware upgrade could contain stripes of missing/wrong 3D data.

  • Zivid Two only: Fixed too short timeout when using DHCP to obtain an IP address. The short timeout could cause the camera to fall back to a link-local IP address before the DHCP process could complete.

  • Zivid Two only: Fixed a race-condition issue, particularly prominent in the presence of network delay, where the SDK would fail to connect to the camera.

  • Zivid Two only: Fixed an issue which could cause the fans to run at excessively high RPM.

  • Zivid Two only: Fixed an issue where unsent data on the camera could potentially be overwritten with new/wrong data.

Current limitations for Zivid Two

  • Direct connection between Zivid Two and a dedicated 10Gb PCI-Express network card is recommended for optimal performance. A Thunderbolt 3 external network adapter connected to a Thunderbolt 3 port offers similar performance to a dedicated PCI-express card. USB-based network adapters can occasionally give errors when using the camera, and has reduced and more variable capture speeds.

Known issues

  • Zivid Two only: If the PC process is aborted non-cleanly (for example via a SIGINT, SIGABRT or similar) when connected to a Zivid Two, such that the TCP connection between the camera and the PC is not closed properly, the camera will power cycle when it detects that the network connection is down (typically within 15 seconds).

    • On rare occasions, the camera may not properly detect that the connection to the PC process has been killed. The camera will then continuously reject new connections from the SDK, which will make the camera not visible from the SDK. In this scenario the camera must be power-cycled manually.

  • Zivid Two only: On very rare occasions a “Command failed: CameraImageTimeout” exception may be thrown during capture. This will resolve itself on the next capture.

  • Zivid Two only: Capture time on Windows can occasionally be longer (more than 1 second longer than normal) due to Ethernet packet loss leading to data re-transmits. We recommend to increase “Receive Buffers” and “Transmit Buffers” in the network driver settings in Windows to reduce the occurrence of packet loss.

  • Capture time can be higher on Windows compared to Linux for identical hardware. The difference is larger for low exposure times, and lower for higher exposure times. The relative difference between Windows and Linux on identical hardware is higher when using Zivid Two, compared to using Zivid One+.

  • Ubuntu 20.04 only: When using Linux 5.8 kernel (released with Ubuntu 20.04.2 when using the newer HWE kernels), with an Intel GPU as rendering device, Zivid Studio and Visualizer can give errors like “CL_OUT_OF_RESOURCES” and “OpenGL error: GL_INVALID_OPERATION” when displaying the point cloud. To avoid this issue, use Linux kernel 5.4, which is the LTS (stable) base Linux kernel for Ubuntu 20.04.



  • Added support for the Zivid Two camera.

  • Improved speed of the experimental “Stripe” vision engine.

  • Added official support for Ubuntu 20.04.

  • Improved experimental In-field Correction:

    • Improved algorithm in order to yield better post-correction accuracy in some cases.

    • Fixed issue where users would get an exception with “No significant correction could be identified (noise >> signal).” even though the input data was actually sufficient to calculate a correction.

  • Improved robustness of the checkerboard detection used in the calibration API and in-field correction.

  • Increased maximum values for color balance settings from 2.0 to 8.0.

  • Added experimental setting Settings::Processing::Color::Experimental::ToneMapping::Enabled. This setting controls if tone mapping is performed on all 3D captures (single and HDR captures), or only for HDR captures.

  • Reduced noise in dark/underexposed regions of the color image for 3D captures, especially with tone mapping enabled and/or gamma below 1.

  • AMD is no longer supported on Ubuntu 16.04. (AMD dropped support for Ubuntu 16.04 as of Radeon Software for Linux 18.50.)

  • Support for the original Zivid One camera is deprecated, and will be removed in Zivid 2.4. (Note: This only concerns the Zivid One camera, Zivid One Plus is still supported.)


  • Added option to the Information panel for saving frame settings to file.

  • Improved the look of file dialogs on Ubuntu.

  • Fixed issue where 2D images could be flipped upside down in Zivid Studio when scrolling the mouse wheel rapidly under high CPU load.

Bug fixes

  • Fixed issue where one would get the error “Failed to check if block 0 in the EEPROM master table is occupied” when attempting to connect to a Zivid One+ camera.

  • Signal-to-noise ratio (SNR) for Stripe engine has been corrected and is now comparable to SNR for the Phase engine.

    • The improved SNR calculation means that the noise filter now has a closer correspondence in behavior for the two engines.

Noteworthy changes in this release

  • A small performance degradation in 3D capture time compared to 2.2 may be observed when using weaker compute devices, such as certain weaker Intel integrated GPUs or CPUs. The performance degradation for such devices is typically from 1% to 6% depending on the compute device and the capture settings.

Current limitations for Zivid Two

  • Experimental “Stripe” vision engine not yet supported.

  • Only a single Zivid Two may be connected to a PC at a time.

  • The network configuration of Zivid Two can not be customized.

  • Direct connection between Zivid Two and a dedicated 10Gb PCI-Express network card is recommended for optimal performance. A Thunderbolt 3 external network adapter connected to a Thunderbolt 3 port offers similar performance to a dedicated PCI-express card. USB-based network adapters can give capture errors and limit capture speeds, and are not recommended for this release.

Known issues

  • Capture time can be higher on Windows compared to Linux for identical hardware. The difference is larger for low exposure times, and lower for higher exposure times. The relative difference between Windows and Linux on identical hardware is higher when using Zivid Two, compared to using Zivid One or One+.

  • Zivid Two only: Occasionally, on the very first capture after a firmware upgrade is finished, the point cloud output can be wrong. This will be visible as lines of wrong/missing data in the point cloud. This issue will resolve itself on the following capture.

  • Zivid Two only: Occasionally, if capturing after a firmware upgrade of the camera was completed, a “Camera not connected” or similar exception may be thrown. This issue will resolve itself when re-connecting to the camera.

  • Zivid Two Only: Capture time on Windows can occasionally be longer (more than 1 second longer than normal) due to Ethernet packet loss leading to data re-transmits.

  • Zivid Two only: On very rare occasions a “Command failed: CameraImageTimeout” exception may be thrown during capture. This will resolve itself on the next capture.

  • Zivid Two only: Very rarely the network link between the camera and client might go down, resulting in a timeout. However, the link will be automatically restored and the user can catch the Zivid::Exception and reconnect to the camera without manual intervention.

  • Ubuntu 20.04 only: When using Linux 5.8 kernel (released with Ubuntu 20.04.2 when using the newer HWE kernels), with an Intel GPU as rendering device, Zivid Studio and Visualizer can give errors like “CL_OUT_OF_RESOURCES” and “OpenGL error: GL_INVALID_OPERATION” when displaying the point cloud. To avoid this issue, use Linux kernel 5.4, which is the LTS (stable) base Linux kernel for Ubuntu 20.04.



  • New, experimental Zivid Vision Engine added, called Stripe:

    • The original and default Zivid Vision Engine is named Phase.

    • New Settings::Experimental::Engine added to specify which Zivid Vision Engine to use.

    • The Stripe Engine suppresses inter-reflection artifacts and improves data quality on shiny objects like cylinders and chrome-plated parts.

    • Additional acquisition and processing time are required for the Stripe Engine.

    • Both the Reflection Removal Filter and the Contrast Distortion Correction filter must be enabled when using the Stripe engine. This may change in the future.

    • Note that due to a known bug in our GenICam wrappers, if the Reflection Removal and Contrast Distortion Correction filters are not enabled, the call will hang instead of reporting an error.

    • The Stripe Engine is currently experimental, and may be changed and improved in the future.

    • The Stripe Engine is only supported on Zivid One Plus (not Zivid One)

  • Extended the Calibration API to support the new line of official Zivid calibration boards, the first of which being the ZVD-CB01 (7x8 30mm). This board can now be used with the existing hand-eye and multi-camera calibration features without modification to client code. It can also be used with the new In-field Correction feature (see below).

  • Added the new experimental In-field Correction API. Together with the new ZVD-CB01 calibration board, this allows the user to perform both verification and correction of a camera’s dimension trueness. The API has the following functions:

    • verifyCamera: Based on a single calibration board capture, quantify a camera’s local dimension trueness.

    • computeCameraCorrection: Based on one or more calibration board captures, compute a correction that may be applied to a camera in order to improve its dimension trueness. This function also computes a confidence interval for the trueness that can be expected if the correction is applied.

    • writeCameraCorrection: Write a correction to a camera. The correction will persist on the camera even though the camera is power-cycled or connected to a different PC. After calling this function, the given correction will automatically be used any time the capture function is called on this camera.

    • resetCameraCorrection: Reset a camera’s correction to factory default.

    • hasCameraCorrection: Check if a camera has a non-default correction.

    • cameraCorrectionTimestamp: Check when the current correction was written to a camera.

    • See the API documentation for a more detailed description.

  • Added the command-line tool ZividExperimentalInfieldCorrection. This tool enables users to easily perform core tasks from the new In-field Correction API without needing to write code. Use the command ZividExperimentalInfieldCorrection --help to see instructions for use. Note: On Linux, this tool comes as part of the zivid-tools package, not the core installer.

  • Added Gamma setting. Gamma can be used to brighten or darken the colors of the point cloud using a gamma curve.

  • Updated Zivid One+ firmware to version 1.8.4.


  • Added a new Information side panel:

    • This panel contains information about the current frame / point cloud, including the settings that were used, the resolution of the point cloud, as well as the capture time.

    • The capture time is defined as the time it takes from capture is initiated until all processing is completed and the point cloud data is available on the compute device.

    • When opening a .zdf file the side panel displays the camera’s serial number and model name used to capture this frame, as well as the Zivid SDK version.

    • This new side panel can be displayed by clicking “Information” in the lower right corner, via the “View” menu, and via the shortcut “Shift+I”.

  • Added support for the new Stripe engine.

  • Added option to the “View” menu to disable resetting of the point cloud view when opening a .zdf file.

  • Added “M” as a shortcut for meshing.

  • Added tab buttons to more easily switch between Assisted Mode and Manual Mode.

  • Fixed Depth and Color image views being reset if the window size changes.

  • Adjusted colors, sizes and paddings various places in the GUI.

Bug fixes

  • Linux

    • Fixed a crash that could occur after subsequent exceptions from the capture() function. If one exception had previously been thrown from capture(), then if another failure occurred then the system could crash instead of throwing another exception. This crash would only happen when using the Ubuntu 16.04 packages.

  • Windows

    • Fixed an issue that would trigger a false positive malware alert on some antivirus software.

  • .NET

    • Fixed a bug where calling .Dispose() multiple times on the same object could cause a System.AccessViolationException.

  • Firmware

    • Fixed an issue where firmware could hang after a long period of time



  • Added downsampling functionality to the PointCloud class:

    • Downsampling can be used to reduce the size of the point cloud, in order to perform computations on a smaller number of points.

    • Downsampling combines an NxN region of pixels in the original point cloud to one pixel in the downsampled point cloud. 2x2, 3x3 and 4x4 downsampling options are available.

    • Downsampling is performed in a way that reduces the noise of the points by averaging them weighted by SNR^2, ignoring invalid (NaN) points. Downsampling is performed on the compute device.

  • CameraInfo is now available in the Frame class. CameraInfo contains among other things the serial number and model name of the camera used to capture the frame.

  • Fixed an issue where connecting to a camera would throw an exception with message “Failed to set pixel format (CAM_API_STS_NOT_WRITABLE).”

  • Updated Zivid One+ firmware to version 1.7.4:

    • Fixed a bug where the camera could potentially stop responding.


  • Numerical values in Settings and Settings2D (such as ExposureTime, Aperture etc.) can now be compared using operator< and operator>.


  • PointCloud.Transform now returns a reference to itself, such that Transform, Downsample etc. can be chained together.


  • Added “mm” as unit in the Depth Image view.



  • New Settings / Settings2D / Capture API:

    • A single Settings object now contains all information necessary for a capture.

    • Settings contains one or more acquisitions, plus processing settings like filters and color balance. When more than one acquisition is provided HDR capture is performed, and the combined frame is returned.

    • The Settings object is now provided directly as an argument to the capture method on the Camera.

    • The separate 2D capture method on Camera is removed. 2D capture is now performed by passing a Settings2D to the capture method.

    • The user may specify as few or as many parts of Settings or Settings2D as desired. When capturing, any settings which are not explicitly specified will use camera-specific default values.

  • New point-cloud API:

    • A call to the capture method returns a Frame, which provides a handle to a PointCloud. The PointCloud object is a handle to the point-cloud still stored on the GPU, and specific data may then be copied to CPU memory when desired through various methods of PointCloud.

    • The PointCloud allows copying of the following data-formats:

      • PointXYZ

      • PointXYZW

      • PointZ

      • ColorRGBA

      • PointXYZColorRGBA

      • PointXYZColorBGRA

      • SNR

    • PointCloud functionality replaces the old DeviceCloud, which no longer exists.

  • New ContrastDistortion filter:

    • This filter has the ability to correct and/or remove points that have been distorted due to very strong intensity gradients. This is applicable for shiny/reflective objects as well as diffuse objects with e.g. sudden changes from white to black.

    • This filter is considered experimental, and may change in future releases.

  • New multi-camera calibration:

    • Part of the new Calibration namespace, together with hand-eye calibration.

    • Multi-camera calibration is used in a multi-camera setup to find the pose of secondary cameras in the frame of a designated primary camera, e.g. to combine points clouds into a single frame of reference.

  • GPU-accelerated point-cloud transforms:

    • Through the transform method of PointCloud the user may now perform in-place GPU-accelerated transformation of the point-cloud’s 3D coordinates. Such a transform, provided in the form of a 4x4 matrix, may come from the functions of the Calibration namespace, or they could be any user-defined transform.

  • New Aperture setting:

    • Introducing the Aperture setting, which replaces the old Iris setting.

    • This is a floating-point number with units of F-number. The API supports values in the range [1.4 - 32].

    • On capture the camera will choose the internal iris position that can most closely approximate the specified F-number.

    • The aperture may be completely closed by calling a method on the Camera.

  • New color balance settings:

    • The user may now independently control gain applied to the three color channels, without any effect on the calculated 3D point coordinates.

    • Captures are now likely to give more valid points given the same scene, especially if the scene contains bright reds.

    • Added support for color-balance in 2D captures.

  • New point-cloud SNR metric:

    • Introducing the Signal-to-Noise Ratio (SNR) metric. This replaces the old Contrast metric, and is always a non-negative non-NaN number.

    • Improved HDR-merge of 3D point coordinates based on the new SNR metric.

    • When loading a ZDF file created with API 1.X, the SNR values of the point cloud is approximated based on the old Contrast values.

  • New default values for settings:

    • Default value of Gain is reduced from 2 to 1.

    • Default value of Brightness for One Plus Medium cameras is increased from 1.0 to 1.5.

    • Default value of Brightness for One Plus Large cameras is increased from 1.0 to 1.8.

    • Default value of ExposureTime for all One Plus cameras is reduced from 8333 to 6500.

  • New Noise filter:

    • Filtering points based on SNR value.

    • Replaces the old Contrast filter.

  • Removed old Saturated filter setting:

    • The saturation filter is now always enabled, and cannot be disabled via settings.

  • New Calibration namespace:

    • The contents of the old HandEye namespace is moved into Calibration namespace.

    • All input and output transformation matrices are now in float format instead of double format, to better match the format of the PointCloud data.

  • New CameraInfo API:

    • The member functions on Camera used to get serial number, model name, etc. have been removed.

    • Instead, an instance of the new class CameraInfo may be accessed though a method on Camera.

    • CameraInfo contains camera model name, revision, serial number, firmware version, and the maximum number of bytes of user data that can be stored in the camera.

  • Changes to camera-intrinsics API:

    • Significant performance improvements when estimating the effective camera intrinsics based on a Frame.

    • Method for getting camera intrinsics is taken out of the Camera class and placed in the Experimental::Calibration namespace together with the function for getting intrinsics from a Frame.

  • Gaussian filter moved to after HDR merge, for improved performance.

  • “Live-mode” has been removed from the API.

  • Bidirectional patterns have been removed from the API.

  • ZividVis3D library has been renamed to ZividVisualization.

  • CloudVisualizer class has been renamed to Visualizer, and moved into the Visualization namespace.

  • File extension for file cameras has changed from .zdf to .zfc.

  • Environment namespace has been removed from the API.

  • The Frame2D method for accessing image data has been renamed from colorsRGBA to imageRGBA.

  • Simplified Exception API to contain only a single exception: Zivid::Exception.

  • Many adjustments to naming/terminology.


  • In the C++ API the PointCloud class also has the ability to copy data straight from the GPU to a specified user-allocated CPU data buffer through member functions such as copyData(PointXYZ*).


  • Restructured C# interface to reflect the underlying changes of the core API (see above).

  • CaptureAssistant has been changed from a class to a namespace. This namespace holds two classes:

    • SuggestSettingsParameters

    • Assistant, which contains the method SuggestSettings.

  • Firmware has been changed from a class to a namespace. This namespace holds a new class, Updater, which provides firmware-update related functionality.

  • The primary image class for 2D color data is now called ImageRGBA. It provides two methods for accessing color data:

    • ToArray(): 2D array of the ColorRGBA struct.

    • ToByteArray(): 3D array of bytes, with the third index used for selecting image channel (RGBA).

  • Pose::ToArray() has been removed.

  • Pose::ToArray2D has been renamed to Pose::ToMatrix().


  • All settings are renamed to match the new name in the core C++ API.

  • MergedMultiFrame no longer has an ApplyType field.

  • MergedMultiFrame has been renamed to MultiAcquisitionFrame.

  • Removed duplicated settings for MultiAcquisitionFrame and single frame.

  • SettingsControl contains common capture settings, like filters and color balance. AcquisitionSettingsControl contains settings for one acquisition.

  • SingleFrame mode uses the settings under categories SettingsControl and AcquisitionSettingsControl. SingleFrame mode is used to capture with just a single acquisition.

  • MultiAcquisitionFrame mode uses the settings under SettingsControl, plus all acquisition settings added via MultiAcquisitionFrameControl::AddAcquisition. MultiAcquisitionFrame mode is used to capture with multiple acquisitions (HDR).

  • Continuous mode is no longer supported.

Zivid Studio

  • Option to save or load complete capture settings through File -> “Import/Export Capture Settings”.

  • Improved step size of the settings sliders.

  • Allow changing all settings when running “Live” mode with one enabled acquisition.

  • Added a notification in the UI when running “Live” mode with brightness setting above 1.0.



  • Linux installers (specifically zivid-telicam-driver_*.deb) now properly uninstalls the old telicam-sdk package if upgrading from older (<=1.4) versions of the Zivid SDK.

  • Fixed a bug in the Linux installers (specifically zivid-telicam-driver_*.deb) where TelicamSDK samples would be written to /root. These samples are no longer installed.

Bug fixes

  • Fixed problem that could cause “Inconsistent frame timing detected” exception with older Zivid One cameras. This fixes a known limitation from release 1.8.1.

  • Fixed a resource leak on the USB layer.

  • Fixed bug where DetectionResult would be considered valid despite containing a NaN feature point.

  • Fixed a bug where saving and loading YAML files in different locales could fail due to conflicting decimal point conventions. YAML serialization now always uses “.” as decimal point.



  • Added new experimental function Zivid::Experimental::Calibration::estimateIntrinsics() to the C++ API. This function provides more accurate camera intrinsics when projecting 3D points to 2D.

  • Fixed an issue where artifacts near the edges of the projector’s field-of-view would not be removed correctly.

  • Experimental multi-Zivid support:

    • This feature is tested using up to four Zivid One Plus cameras simultaneously from one PC.

    • Multiple cameras can be used simultaneously, however, each individual camera should not be used from several threads at the same time. Connecting to the cameras must be done in sequence.

    • Known limitations:

      • Some USB chipsets will not perform well during high load (multiple captures at the same time). This can manifest itself as exceptions being thrown during capture. If you experience this, try to use different USB ports or a different PC.

      • Capturing during extended periods of very high load on NVIDIA GPUs can cause OpenCL out-of-memory related exceptions. The speed and RAM size of the GPU affects this issue.

      • If you are using Intel NEO OpenCL driver for Linux, version 20.08 or newer is required. Older versions of this driver can be unstable.


  • Updated zivid-telicam-driver to version

  • Added dependency for zivid deb package on zivid-telicam-driver deb package.

Zivid Studio

  • When opening a .zdf file the filename is shown in the window’s title bar.

Known Limitations

  • Users of the original Zivid One camera (not One Plus series) may experience exceptions during capture. We recommend users of the original Zivid One model to stay on SDK 1.8.0 or earlier.



  • Improved capture assistant:

    • Improved performance (about 25% shorter analysis time).

    • Improved results for capture budgets (“Max capture time”) below one second.

    • Fixed an issue where the wrong outlier filter threshold was returned in case of Large cameras.

  • Removal of artifacts near the edges of the projector’s field-of-view.

  • Fixed compatibility issues with Intel NEO OpenCL drivers for Linux on new Intel GPUs (Broadwell and higher).

  • Improved support for GPUs without double-precision floating-point capabilities.


  • Added support for the Capture Assistant to the .NET API, including sample.

Zivid Studio

  • Assisted Mode (Capture Assistant) is now the default mode when opening Zivid Studio.


  • Fixed issue where the HandEyeCalibration CLI tool did not work on Linux.



  • Improved colors for HDR frames.

  • Improved capture assistant:

    • Generally improved suggestions for any scene and in particular for shiny objects.

    • Option to adapt suggestions based on ambient light frequency.

    • Improved out of focus handling.

    • Max allowed budget increased to 10 seconds.

    • Faster scene analysis.

  • Fix for issue where unplugging USB or power during firmware update could result in a situation where next firmware update resulted in a crash or hanging software.

  • Updated Zivid One+ firmware to version 1.6.7.

Zivid Studio

  • Option to adapt capture assistant suggestions based on ambient light frequency.



  • Added Hand-eye calibration API.

  • Added 2D capture API.

  • More helpful error messages when OpenCL drivers are not set up correctly.

  • Support offline installation on Windows. Sample data is now embedded in the installer.

  • Improved SampleCameraUserData with more explicit CLI options and made it more verbose.

  • Fixed potential camera deadlock when unplugging USB during a capture.

  • Capture Assistant avoids iris values above 46 to increase the depth of field.

  • Use correct alpha values when exporting PCD files.

  • Capture Assistant CLI tool now supports saving suggested settings.

  • Removed Qt dependency from Vis3D library.

  • Added SampleHandEyeCalibration samples.

  • Added SampleCapture2D samples.

  • Added Vis3D samples.

  • Added keyboard shortcut for reset view(backspace) & colors on/off(c) for CloudVisualizer.


  • Added missing user data functionality to keep .NET API in sync with C++ API.

  • Make sample code copy release DLLs from the correct folder to avoid loading debug DLLs in release build.

  • Improved reference documentation.

  • Fixed month conversion bug.


  • Added support for HALCON 19 in Ubuntu.

Zivid Studio

  • Fixed issue where setting tooltips wrongly appears

  • Fixed potential crash when moving the mouse in depth/color 2D views

  • Fixed depth/color 2D view being reset when changing tab

  • Added “Save settings to folder” to “Capture” menu in the right hand side panel

Known defects

  • Unplugging USB or power during firmware update may result in a situation where next firmware update results in a crash or hanging software. To recover from this situation power cycle the camera.



  • Improved semantic versioning support in CMake config files. Now newer version of Zivid SDK will be found when using find_package using same major version, but lower required minor or patch version.

  • Renamed telicam-sdk deb package to zivid-telicam-driver.

  • Calling combineFrames on empty vector now results in an exception, previously this would result in a crash.

  • Windows installer will now by default add the Zivid binary directory to system PATH during installation.

  • When installing the experimental GenICam driver Zivid will be added to GENICAM_GENTL64_PATH.

  • Supported Halcon version for experimental GenICam driver is bumped to 19.

  • Improvements to API documentation.

  • Park projector mirrors when idle.

  • Added watchdog that will reset the camera if it is connected to a PC but is not enumerated within a timeout.

  • Minor increase to the minimum RPM for the external camera fan.

  • Static link more dependencies for the Windows build, this makes it easier to use the .NET API from Matlab and Labview.

  • Improved post install step of deb packages to make 18.04 package installable on newer Ubuntu versions.

  • Improved USB reconnect handling when upgrading camera firmware. This fixes issues with flashing camera in Docker.

  • Improved contrast value calculation. The new method is based on SNR and it will make the contrast filter and HDR work more consistent under varying ambient light conditions.

  • Improvements and breaking API changes to the experimental Auto Exposure feature:

    • Re-branded to Capture Assistant.

    • Improvements to core algorithm.

    • Better support for various camera models.

    • Region of Interest feature removed.

  • Updated Zivid One+ firmware to version 1.6.6.

Zivid Studio

  • New Assisted Mode for capturing.

  • New Histogram feature.

  • The depth view Z-range can now be configured.

  • Add support for saving color/RGB image as PNG/JPG/BMP.

  • Consistently show 2 decimal places in all of the UI, before 3 decimal places was used in some parts of the UI.

  • Moved the camera disconnect button into a sub-menu.

  • Automatically change to 3D view when changing color or mesh settings.

  • Improved navigation in 3D view when the point cloud have huge outliers.

  • Bugfix for the connect button being stuck in Connecting state.

  • Button texts changed from UPPERCASE to Capitalized Case.

  • Small improvements to the look & feel of the UI.



  • Added experimental Auto Exposure API.

  • Improvements to reflection filter, remove fewer good points.

  • Improvements to reflection filter in bidirectional mode.

  • Fixed an issue in reflection filter resulting in black lines in scenes with shiny objects and bright surfaces.

  • Improvements to outlier filter, remove fewer good points.

  • Added test in Application class to ensure that binary files and header files are in sync.

  • Fixed an issue with the camera always returning CAM_API_STS_NOT_WRITABLE, after an initial CAM_API_STS_TIMEOUT error.

Zivid Studio

  • Better error handling during startup, the application will now show an error dialog if the Zivid Core library fails to initialize.



  • Added gaussian filter.

  • Expose camera intrinsics in OpenCV format.

  • Improved HDR point merge to reduce noise by up to sqrt(images).

  • Updated Zivid One+ firmware to version 1.6.3.


  • Add save and load function for data models (Settings, FrameInfo, CameraIntrinsics and CameraState).

Zivid Studio

  • Added gaussian filter.

  • Improvements to rendering performance.

  • Show XYZ/RGB/Contrast of pixel under the mouse pointer in 2D views.

  • Improve the 2D Image View behavior.


  • Renamed ZividSuggestSettings to ZividExperimentalSuggestSettings.


  • Support for Zivid One Plus Small, Medium and Large, revision B.


  • Ubuntu 16.04 and 18.04 support.

  • GenICam/HALCON preview for Windows 10.

  • Changed from DirectX to OpenCL as the GPU compute platform.

  • Performance improvements.

  • Re-branding from Zivid Labs to Zivid (including log and config folders).

  • Support for Zivid One Plus Small, Medium and Large, engineering builds.


  • Functionality to flash cameras from the API added.

  • Function for writing user data to cameras added.

  • Boost mode, allowing brightness larger than 1.0 for Zivid One Plus.


  • CMake files changed from module mode to config mode.

  • Structured bindings support for settings.

Zivid Studio

  • Rewritten from scratch:

    • Modern look and feel.

    • Removed little used functionality.


  • Support for new camera revision.

  • Fix discrepancies in the functionality of the iris.


Some of the following changed was introduced during the release candidate period. If upgrading from a rc-candidate, some but not all of this will apply.

Major changes

  • New reference frame. The reference frame have changed from the projector to the camera. Any eye-hand calibration done using older software needs to be re-done. This changed between rc3 and rc4.

  • From version 1.0.0 the API is stable and following the semantic versioning scheme from

  • New settings API.

  • HDR performance improved.

  • API fully documented.

  • Support multiple Zivid cameras connected to the same computer.

  • Update of firmware automatically using Zivid Studio or manually using standalone application.

  • Added Application class that manages resource, it needs to be the first thing created when using Zivid.

  • Removed return codes from C++ API, API is now using exceptions exclusively for error handling.

  • Removed System class and split it into more specific namespaces.

Full change log

  • Visual Studio sample projects added to installer.

  • CMake sample projects added to installer.

  • Setting exposure_time to 19654 no longer fails.

  • Zivid Studio crashes randomly when capturing frames, fixed.

  • ZividNET.dll can now be loaded from MATLAB.

  • Report error when attempting to create a texture of invalid dimensions.

  • Bi-directional giving corrupted output data in some cases, fixed.

  • Preferences is now resizing its content properly.

  • Turn off fans when shutting down Zivid Studio.

  • Support for pre revision 3 cameras removed.

  • New patterns for improved signal-to-noise ratio and reduced noise.

  • Added version info for Zivid Studio in about dialog.

  • Added CameraState.h and ImageInfo.h to the installer.

  • Bugfix for mesh mode in Zivid Studio.

  • Saving/loading settings to YML in Zivid Studio now works.

  • Camera reconnect added in ZividStudio.

  • Logging to file.

  • Include “legal notice” for 3rd party libraries in Zivid Studio.

  • Added nicer application icons.

  • New version of the Toshiba Teli drivers.

  • Digitally signing the executables.

  • Clean up public C++ API.

  • Install sample in Program Files\Zivid\SampleData.

  • Show error dialog in Zivid Studio if camera unit info couldn’t be read.

  • Up to date and correct header comment in all header files.

  • Make sure live pattern display is turned off on exit.

  • Fixed all TODOs and FIXMEs from public API.

  • Renamed public function names to be more descriptive and consistently named.

  • Make Zivid Studio initialize properly without camera connected.

  • Make public API C++11 conforming.

  • Sign the uninstaller to avoid warnings when launching it.

  • Remove old registry keys when installing new version.

  • Uninstall old version as a part of running the installer.

  • Build with /WX /W4 in Visual Studio, both internal code and sample code.

  • Stopped using MSVC C++ extensions.

  • Expose version info in .NET.

  • Refuse to connect a camera if firmware version does not match.

  • Added new version notification in ZividStudio.

  • Remove logging API from public API.

  • Remove state callback API from public API.

  • CameraInfo and Camera merged.

  • Reduced fan noise under normal working conditions.

  • Removed usbPath and internalCameraId from public API.

  • Associate Zivid Studio with .zdf files.

  • Make Zivid appear in “Add/Remove programs” in Windows.

  • Embed VCRedist files for Visual Studio in the setup file.

  • Download and install Toshiba Teli camera drivers if needed.

  • Removed std::shared_ptr from public API.

  • Removed ZSetting from C++ API.

  • Renamed Measurement class to Frame.

  • Moved saveMeasurement from System to Frame class.

  • Added separate installer for CloudViewer.

  • Various bug fixes and performance improvements.


  • Fixed problem with missing Boost DLLs in installation package.


  • Fixed bug in reflection filter when used with perpendicular patterns.


  • Fixed bug in live mode introduced in version v0.9.534.


Note that this will be one of the last releases before APIs and GUI will change name from ShapeCrafter to Zivid (e.g., ShapeCrafterGUI will become Zivid Studio and ShapeCrafter classes will change name to Zivid).

  • Added support for perpendicular patterns (twice the amount of patterns: horizontal + vertical). Use enablePerpendicularPatterns() in API (or toggle it via preferences in GUI). IMPORTANT: Due to limitations in the current hardware, the projector exposure time must be increased to above approx. 33000 microseconds for this to be stable.

  • Added reflection filter which can detect and remove outliers due to reflections. Note that the reflection filter works best when perpendicular patterns are used (see Preferences). Turn it on via enableReflectionFilter() in API.

  • ShapeCrafterGUI: Support for LGGC (Large Gap Gray Code) error correcting pattern mode via Edit->Preferences, or via enableErrorCorrectingCode() in the API.

  • Saturated pixels can now be detected and removed. Should improve fusion of HDR measurements. Enable it via Preferences in the GUI (or call enable) or call setMaskSaturated in API.

  • Added function getFirmwareLabel to get firmware revision (C++ and .NET API).

  • ShapeCrafterAPI: Added support for revision 2 of PCB. Note that it has a different pinning for e.g. the iris (hence the setProductRevision function).

  • Select product revision in preferences dialog of GUI (handles differences between Rev. 0 (PoC), Engineering Model Rev. 1 and Engineering Model Rev. 2.

  • Added setProductRevision() function to API. Please call this function before initializing ShapeCrafter.

  • Added isConnected() functions to C++ and .NET API.

  • Function initialize() now returns a boolean flag that tells whether both camera and projector could be successfully connected.

  • Firmware update: Zivid nows starts with a 7-second splash image and then turns itself off. This requires a firmware update. Please download and install associated firmware: ZIVID_v0_9_10_ROM_v300_splash.bin.

  • ShapeCrafterNET: Added Logger.setLogCallback() function. Allows clients of .NET API to receive log callback messages from underlying C++ API.

  • ShapeCrafterNET: Improved StringSettings and StringSetting classes. Now behaves more like in C++ (can be read/written via indexing).

  • ShapeCrafterNET: Attempted to fix a bug which sometimes resulted in a crash at exit when using the .NET API.

  • ShapeCrafterNET: Added getVersionInfoForModule() function, which returns version information for a given DLL.

  • ShapeCrafterGUI: See version numbers of all DLLs via the Help->About dialog box.

  • ShapeCrafterGUI: Support for viewing of the point cloud in monochrome color (disable RGB) via a button in the toolbar.

  • ShapeCrafterGUI: Mesh view now updates visualization instantaneously.

  • ShapeCrafterGUI: Fixed bug related to making uncalibrated measurements.

  • ShapeCrafterGUI: Clicking apply in preferences dialog should now re-initialize the system (i.e. load new calibration files etc.).

  • CloudViewer: New application for visualizing point clouds that is no longed based on PCL (not it is based on DirectX) Can also be associated with W3P files.

  • ShapeCrafterAPI: An exception is now thrown if the camera cannot be initialized.

  • Python API: Added support for controlling the iris.

  • ZividCalibrationApp: New Qt-based calibration application. The application attempts to detect the image corners in projector/camera before images can be saved.

  • Added automatic generation of package and installer from CMake.